线性表的几个链式储存结构介绍
2010-02-02 00:00
971 查看
线性表的顺序存储结构要求逻辑关系上相邻的元素在物理位置上也相邻,这样方便了随机存取,但是在插入和删除元素时,需要移动大量元素,而线性表的链式存储则不要求逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构的可随机存取的优点,不过在插入和删除元素时比较方便。
有时,我们会在单链表的第一个结点之前附设一个结点,称之为头结点。头结点的数据域可以不存储任何信息,也可以存储如链表的长度等一些附加信息。头结点的指针域指向第一个结点,如果线性表为空,则头结点的指针域为NULL。
循环链表的操作与单链表基本一致,差别在于算法中的循环条件不是p或者p->next是否为空, 而是他们是否等于头指针。
有时候,在循环链表中设立尾指针而不设头指针,可以使某些操作简化。
和单链表的循环链表类似,双向链表也可以有循环链表。
单链表
单链表可由头指针唯一确定,在C语言中可用“结构指针”来描述:typedef struct Node { ElemType data; struct Node *next; }Node, *LinkList;
有时,我们会在单链表的第一个结点之前附设一个结点,称之为头结点。头结点的数据域可以不存储任何信息,也可以存储如链表的长度等一些附加信息。头结点的指针域指向第一个结点,如果线性表为空,则头结点的指针域为NULL。
循环链表
表中最后一个结点的指针域指向第一个结点,整个链表形成一个环。循环链表的操作与单链表基本一致,差别在于算法中的循环条件不是p或者p->next是否为空, 而是他们是否等于头指针。
有时候,在循环链表中设立尾指针而不设头指针,可以使某些操作简化。
双向链表
在双向链表的结点中有两个指针域, 其一指向直接后继,另一指向直接前驱,在C语言中可描述如下:typedef struct Node { ElemType data; struct Node *next, *prev; }Node, *LinkList;
和单链表的循环链表类似,双向链表也可以有循环链表。
相关文章推荐
- 线性结构--->循环队列的链式储存实现
- 数据结构之线性结构---队列 链式储存
- 栈的线性储存结构与链式储存结构的实现(C语言)。
- 数据结构之线性表(顺序储存)
- 数据结构之线性表-链式存储之单链表(一)
- 数据结构:线性表的链式存储
- 链式结构线性表的实现(二)
- 【数据结构与算法】基本数据结构——线性表的链式表示
- C语言 双向循环链表的实现和结构 链表 线性表的链式实现
- 第八课,线性表的链式存储结构
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- 线性表的链式存储结构-单链表
- c/c++常用算法(2) -- 数据结构(线性表的链式存储)
- 数据结构一一线性表的链式存储结构之插入与遍历
- 数据结构一一线性表的链式存储结构之头插法和尾插法建立链表
- 线性表的链式存储结构——单链表
- 线性表之链式存储结构_单链表相关算法
- 数据结构之线性表——队列的链式存储
- [C++]数据结构实验03:链式结构线性表的基本操作
- 数据结构之线性表――链式存储结构之单链表(php代码实现)