02线性表(线性表的链式表示)

2.3线性表的链式表示

 由于顺序表的插入,删除操作需要移动大量的元素,影响了运行效率,由此引入了线性表的链式存储。链式存储线性表时,不需要使用地址连续的存储的单元,即它不要求逻辑上相邻的两个元素在物理位置上也相邻,他是通过链,建立数据元素之间的逻辑关系,因此,对线性表的插入,删除不需要移动元素,而是只需要修改指针。

2.3.1单链表的定义

线性表的链式存储又称 单链表。他是通过一组任意的存储单元来存储线性表中的数据元素。为了建立数据元素之间的线性关系,对每个链表中结点,除了存放元素自身的信息之外,还需要存放一个指向其后继的指针。

备注:由于单链表附加了指针表,也存在浪费存储空间的缺点。由于单链表的元素是离散地分布在存储空间中的,所以单链表是非随机存取的存储结构,即不能直接找到表中某个特定的结点。

查找某个特定的结点时,需要从表头开始遍历,依次查找。

头结点和头指针的区别:不管带不带头结点,头指针始终指向链表的第一个结点。而头节点是带头结点链表中的第一个结点,结点内通常不存储信息。

引入头结点后,可以有两个优点:

1,由于开始结点位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作和在表的其它位置上的操作一致,无需特殊处理。

2,无论链表是否空,其头指针指向头结点的非空指针。

2.3.2单链表上的基本操作的实现

1,采用头插法建立单链表

该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点。

2,采用尾插法建立单链表

头插法建立单链表的算法虽然简单,但是生成的链表中结点的次序和输入数据的顺序不一致。如果希望两者一致,可以采用尾插法。这个方法是将新结点插入到当前链表的表尾上,为此必须增加一个尾指针r,使其始终指向当前链表的尾结点。

猜你喜欢

转载自blog.csdn.net/will5451/article/details/81669313
今日推荐