什么是线性表?
顾名思义,就是具有线一样的特质的表。表的元素像直线一样排列。
即“把所有数据用一根线儿串起来,再存储到物理空间中”。
例如在学生的成绩表中,一个学生的姓名、学号、成绩信息为一个结点,然后有一个开始结点(它的前面没记录)和一个终端结点(它的后面没记录)。这种逻辑结构称为线性表,请注意,是逻辑结构。
1.集合中必存在唯一的一个“第一元素”。
2.集合中必存在唯一的一个 “最后元素” 。
3.除最后一个元素之外,均有唯一的后继(后件)。
4.除第一个元素之外,均有唯一的前驱(前件)。
线性表的表现方式
顺序存储结构(顺序表)
一般使用数组实现线性表的存储,可以使用数据索引进行查询,每个元素都是固定位置。
优点
便于查询
得益于顺序存储结构,我们可以根据具体位置直接查询到我们所需要的值。
节省逻辑结构空间
不需要为结点之间的逻辑关系分配额外的存储空间。
缺点
移动大量元素
就像排队有人插队一样,插入一个结点,则后面的结点全部需要往后移。
存储空间不能充分利用
因为需要预分配存储空间,所以分配空间时候一般按照最大分配,这样让存储空间不能得到充分利用。
难以扩充
当发现表的存储空间不够的时候,难以对其进行扩充,只能重新分配并复制。(ps:后有动态数组可解决这个问题,但是牺牲了效率)
链式存储结构(链表)
为了解决顺序存储结构删除插入效率低的弊病,分为两个域,一个数据域,一个指针域。数据域就是存数据的地方,指针域就是存指针的地方,指针域相当于门牌号,用于标明下一个结点的位置。
优点
删除和插入不需要移动位置,只需要更改指针域即可。时间复杂度O(1),如果需求要求多次删除插入就可以使用这个。
缺点
查询只能一个一个结点去遍历,效率低。
建议使用查看大图查看
简短不疲倦,欢迎点赞