选择显示字体大小

浅谈动态数据结构


  众所周知,著名计算机科学家n.wirth提出过这样一个公式:算法+数据结构=程序.他不仅指出了数据结构在计算机科学中的地位,也指出了它与算法的密切联系:算法与数据结构是相辅相成.缺一不可的两个方面。

  数据结构也叫信息结构,讨论的是数据的组织问题.而我们常用的整型.浮点型等类型的数据,都属于静态数据,他们的存储空间在程序执行过程中不能加以改变,因此被称为静态数据结构。

  但是,在我们实际的程序设计中,经常遇到这种问题:要用一种结构存储一组数据,但又不知道随着程序的执行而存入的这组数据的大概数目, 若按照估计的数目用数组来存取这组数据的话,数目估计过大则会浪费了大量的存储空间, 但要是数目估计过小就又会引发错误导致程序停止运行;再者, 在程序运行中时常需要在结构的某个位置删除或插入一些数据,于是会造成大规模的数据的频繁的移动, 加大了算法的复杂度. 可见这个问题触及到了计算机世界中最宝贵的时间和空间资源,吃尽了苦头的人们于是找到了一种比较好的解决方法。

   这个方法就是将此结构在物理上分散存储,而在逻辑上形成一个完整的结构。通俗一点说就是把整个结构中的一个一个数据,在物理上分别存储在许多不同的储存块里,这就可以很灵活地随时删除或加入新的数据,而不必事先知道结构的大小,可见解决了"空间"问题;不仅如此, 还要设法通过某种联系把这些分散的数据组织起来成为一个逻辑上完整的结构,这样, 添加或删除数据时只需改变一下数据之间的联系就可以了,不会造成大量数据的频繁移动,从而增加了效率又解决了"时间"问题.可见,这是一个不错的解决方案,如何在程序设计中实现这个方案呢? 我们把结构存储每个数据的存储块称作"表结点",并把表结点内部设计成两个部分,一部分存储数据,另一个部分存储下一个表结点的内存地址,这样,我们只要有第一个表结点的地址,就可以一下子将整个结构像链条一样"拎"起来了。这是一种常用的动态数据结构,它的名字就形象地叫做"链表"。

  链表是用指针(指向下一个表结点的内存地址)串起来的,而指针是许多高级语言如pascal.c.c++等,都具有的一种有效的重要的特殊的数据类型。 许多较为高级或实用的动态数据结构(如链表.树等)都或多或少地使用了指针。 但由于指针涉及到了计算机的内存管理,其巨大的灵活性是一把锋利的"双刃剑",造成了大量的不易找出的程序错误,甚至严重到破坏系统代码。因此,新的高级语言java中用"引用"取代了指针。这是附带的议论。搁在一边,暂且不提。但为了便于读者理解,我还是以"指针"来诠释动态数据结构。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons