线性表是一种线性结构,由n个数据元素组成的又穷序列,数据元素又称为节点,线性表中的每个数据元素的含义,在不同的应用中各不相同,但在同一个线性表中的数据元素具有相同的特性。
下面的图总结了第二章的主要内容,用于总结和回想,巩固学习:
线性表的基本运算包括:初始化、求表长、读表元素、定位、插入、删除等基本运算,不同的存储结构实现细节可能不同。
在线性表的存储方式有顺序存储和链式存储。
顺序存储的存储方式是最简单的,逻辑顺序对应于存储顺序,数组就是顺序表的表现之一。顺序存储的运算包括插入、删除和定位,这部分的算法去理解书上的代码是比较好的,在线性表的顺序存储方式的算法中,数据元素的比较和移动的次数是一个重要指标,越少比较越少移动,则算法越优秀。
链式存储:常见的线性表的链式存储有单链表、循环链表和双循环链表。链表中的结点分为值域和指针域两部分,值域放置结点的数据,指针域放置后继结点的存储地址。可见,链式结构的逻辑顺序!=存储顺序,相邻的结点通过指针域相连接。链式存储的运算包括:初始化、求表长、读表元素、插入和删除等基本运算,这些算法在其他类型的链表上也是道理相通的。
比较:对于一些基本运算而言,顺序存储的时间复杂度和空间复杂度跟链式存储不相上下,在按位置查找元素时,顺序存储的开销更小。但是,学习过操作系统原理的我们知道,内存中是一个连续的空间,地址也是连续的。当使用顺序存储实现算法时,需要开辟一个固定的空间来运算,这就造成了内存空间的浪费,有的时候根本用不到那么大的空间而又必须要那么大的空间,内存地址也有可能被割断,造成系统整体效能底下。
而链式存储实现方法通过指针域动态链接,充分使用了内存中的一些细小空间,对内存要求小且运算时不用事先分配空间,大大提高了内存的利用率,对整个算法的优化有很大的帮助。所以链式存储的生命力比顺序存储高。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wz537071/article/details/47072401