数据结构,小步前进之线性表

什么是线性表?

顾名思义,就是具有线一样的特质的表。表的元素像直线一样排列。

即“把所有数据用一根线儿串起来,再存储到物理空间中”。
在这里插入图片描述
例如在学生的成绩表中,一个学生的姓名、学号、成绩信息为一个结点,然后有一个开始结点(它的前面没记录)和一个终端结点(它的后面没记录)。这种逻辑结构称为线性表,请注意,是逻辑结构。

1.集合中必存在唯一的一个“第一元素”。
2.集合中必存在唯一的一个 “最后元素” 。
3.除最后一个元素之外,均有唯一的后继(后件)。
4.除第一个元素之外,均有唯一的前驱(前件)。

线性表的表现方式

顺序存储结构(顺序表)

一般使用数组实现线性表的存储,可以使用数据索引进行查询,每个元素都是固定位置。

优点

便于查询

得益于顺序存储结构,我们可以根据具体位置直接查询到我们所需要的值。

节省逻辑结构空间

不需要为结点之间的逻辑关系分配额外的存储空间。

缺点

移动大量元素

就像排队有人插队一样,插入一个结点,则后面的结点全部需要往后移。

存储空间不能充分利用
因为需要预分配存储空间,所以分配空间时候一般按照最大分配,这样让存储空间不能得到充分利用。

难以扩充
当发现表的存储空间不够的时候,难以对其进行扩充,只能重新分配并复制。(ps:后有动态数组可解决这个问题,但是牺牲了效率)

链式存储结构(链表)

为了解决顺序存储结构删除插入效率低的弊病,分为两个域,一个数据域,一个指针域。数据域就是存数据的地方,指针域就是存指针的地方,指针域相当于门牌号,用于标明下一个结点的位置。

优点

删除和插入不需要移动位置,只需要更改指针域即可。时间复杂度O(1),如果需求要求多次删除插入就可以使用这个。

缺点

查询只能一个一个结点去遍历,效率低。
在这里插入图片描述
建议使用查看大图查看

简短不疲倦,欢迎点赞

猜你喜欢

转载自blog.csdn.net/q913777031/article/details/106253122