什么是线性表的链式存储?他的特点是什么?
线性表链式存储结构的特点是:
- 用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
- 链式存储单元被称为结点,包括数据域和指针域,n个结点链结成链表,即为线性表的链式存储结构。又由于此链表的每个结点只包含一个指针域,故又称为单链表或线性链表。
- 链表中逻辑次序和物理次序不一定相同
举个栗子:
在上面这个表中,顺序表通过一连串的连续地址存储具有一定逻辑顺序的姓氏;而链表通过无序的地址存储具有一定逻辑顺序的姓氏,具体是怎么实现的呢?
链表通过自身的指针域来指向下一个数据域的存储地址,从而将数据按照一定逻辑顺序排列起来。
与链式存储有关的术语
- 结点:数据元素的存储映像,由数据域和指针域两部分组成。
- 链表:n个结点由指针链组成一个链表。是线性表的链式存储结构。
头指针,头结点和首元结点
- 头指针:指向链表中第一个元素的指针。
- 头结点:是在链表首元结点之前设立的一个结点,其数据域一般不存储元素,其指针域指向链表中第一个元素的地址。
- 首元结点:是链表中存储第一个元素a1的结点。
在链表中设置头结点有什么好处?
链表存取方式和顺序表有哪些不同?
在顺序表中:想要查找元素,直接以数组下标的形式a[i]取得第i个位置的元素,获取每个元素的时间复杂度均为O(1)。
在链表中:要获取第i个位置的元素,必须通过指针遍历直至指针指向第i元素。获取每个元素的时间复杂度不同。
图片中的存取方式和我们学的存储方式不一样。