实验三 总结线性表(顺序表、单链表、双链表、静态链表、间接寻址)五种数据结构

顺序表:顺序表是一段地址连续的存储单元依次存储线性表的数据元素,一般用一维数组实现;是一种适用于已知数据元素个数或数据元素个数变化不大的数据结构。该数据结构的存储结构为顺序存储,存取时为随机存取。因此按位查找的时间复杂度为O(1)。在未知的数据元素个数或数据元素变化过大时,使用顺序表则会造成大量的空间浪费。


单链表:单链表是用一组任意的存储单元存放线性表的元素元素,这组存储单元可以连续也可以不连续,甚至可以零散分布在内存中的任意位置。单链表具有一个数据域(data)(存放该结点数据信息)和指针域(next)(指向存放下一结点),还会有一个头指针(first);是动态的存储分配,在数据元素变化大时,相比顺序表可以减少空间浪费现象。但单链表为顺序存取,也就是说无论按值查找还是按位查找时间复杂度均为O(n)。


双链表:双链表与单链表类似,基本操作几乎相同。但双链表相比单链表多了一个指向前驱结点的指针域(prior)。和单链表类似,双链表一般也是由头指针唯一确定;实际应用中常采用带头结点的循环双链表。理论上,循环双链表可以实现随机存取。


静态链表:是用数组来表示单链表,用数组元素的下标来模拟单链表的指针。静态链表由两个域构成:data域存放数据元素,next域存放该元素的后继元素所在的下标,属于静态存储分配。静态链表优于顺序表的是进行插入和删除操作时无需移动后续元素,优化了顺序表的插入及删除操作。缺点:没有解决连续存储分配带来的表长难以确定的问题。


间接寻址:间接寻址是将数组和指针结合起来的一种方法,它将数组中的存储数据元素的单元改为存储指向该元素的指针。当每个元素占用的空间较大时,比顺序表的插入操作要快得多。线性表的间接寻址保持了顺序表随机存取的优点,同时改进了插入和删除操作的时间性能,但是仍没有解决连续存储分配带来的表长难以确定的问题。


猜你喜欢

转载自blog.csdn.net/x1432553805/article/details/80212699