实验二 比较总结线性表的几种主要存储结果

来源:互联网 发布:网站在线下订单源码 编辑:程序博客网 时间:2024/06/16 14:05

线性表的存储方法

顺序表:用一段地址连续的存储单元依次存储线性表的数据元素,元素之间的逻辑关系是用存储位置来表示的,存储结构为随机存取,属于静态存储分配。它的插入和删除需要移动大量元素;需要预先给定存储空间,当线性表的长度变化较大时,难以确定合适的存储规模,因此容易造成存储空间的“碎片”现象。

单链表:用一组任意的存储单元存放线性表的元素,存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。存储结构为顺序存取,属于动态存储分配。元素的逻辑次序和物理次序不一定相同。单链表通过每个结点的指针域将线性表的数据元素按其逻辑次序链接在一起,整个单链表的操作从头指针开始进行。在修改线性表中元素之间的逻辑关系时,只需要修改相应指针而不需要移动元素。

双链表:在单链表的每个结点中再设置一个指向其前驱结点的指针域,这样就形成了双链表。双链表跟单链表类似,属于动态存储分配。也是由头指针唯一确定。双链表是一种对称结构,便于实现各种操作,并可以快速确定表中任一结点的前驱结点。

静态链表:用数组来表示单链表,用数组元素的下标来模拟单链表的指针,属于静态存储分配。在执行插入和删除操作时,只需要修改游标,不需要移动表中的元素。具有链式存储结构的主要优点。

间接寻址:将数组和指针结合起来,将数组中存储数据元素的单元改为存储指向该元素的指针,存储结构为随机存取。在进行插入和删除操作时,不需要移动元素而是移动指向元素的指针。间接寻址保持了顺序表随机存取的优点,并且改进了插入和删除操作的时间性能,但是没有解决连续存储分配带来的表长难以确定的问题。

顺序表与单链表之间的比较:考虑时间性能和空间性能。时间性能:如果线性表需要频繁查找却很少进行插入和删除操作,或其操作和“数据元素在线性表中的位置密切相关时,宜采用顺序表作为存储结构。如果线性表需要频繁进行插入和删除操作,则适合选择链表作为存储结构。空间性能:顺序表只存放数据元素,存储密度为1,链表除了存放数据元素,还要存储表示元素之间逻辑关系的指针,从结点的存储密度上讲,顺序表的存储空间利用率较高。顺序表需要预先分配存储空间,如果空间分配过大,容易造成浪费,如果过小,又容易发生上溢。单链表不需要为其预先分配空间,只要有内存空间可以分配,链表中的元素个数就没有限制。因此,当线性表中元素个数变化较大或未知时,最好使用链表实现,如果事先知道线性表的大致长度,可以使用顺序表,这样空间效率会更高。

总结:在这次实验过程中,遇到了很多困难。首先是在打代码的过程中因为自己的粗心大意而经常打错代码,导致程序出错。然后是对课本内容没有熟悉透彻,没有掌握好所学的知识,没有给出参考代码的例子就会不知道要怎么办了。在上实验课的时候,问了老师双链表的问题,辛苦老师在旁边蹲着帮我解决问题了(当时心里十分不好意思),老师说要有自己的思考,不能什么都照着书本来,不会的就自己在纸上画一画。想了想,自己一直以来确实都太过依赖课本,总是照着课本的内容来,缺乏自己的思考和理解,这样子其实并不能学到东西,这门课并不能死记硬背,而是要在理解的基础上加上自己的思考,思考过后尝试自己动手去打代码,现在的我虽然基础不扎实,但是会一步一步慢慢来,去努力学习,希望有一天能够靠自己打出属于我的代码。

阅读全文
0 0