试题详情
- 简答题如何实现线性表的4种链式存储结构?
- 数据结构中的每一个数据元素对应于一个存储单元,这种存储单元称为存储结点,简称结点。每个结点分为两部分:一部分用于存放数据元素的值,称为数据域;另一部分是指针,用于指向与该结点在逻辑上相连的其他结点,称为指针域。对于线性表,指针域用于指向该结点的前一个或后一个结点(即前驱结点或后继结点)。通过结点的指针域将n个结点按其逻辑结构连接在一起的数据存储结构,称为链式存储结构。
单向链表:在线性链表中,用一个专门的指针指向线性表中第一个结点,每一个结点的指针都指向它的下一个逻辑结点,线性链表的最后一个结点的指针为空(用NULL或0表示),表示链表终止,这样的线性链表称为单向链表。下图是单向链表示意图。
循环链表:将单向链表最后一个结点的指针指向头结点,这样整个链表就构成一个循环,这种链式存储结构称为单向循环链表,简称循环链表。头结点的指针域指向线性表的第一个元素的结点;循环链表中最后一个结点的指针域不再是NULL,而是指向头结点。只有头结点的循环链表称为空循环链表。下图是带头结点的非空循环链表和空循环链表示意图。
双向链表:双向链表的每个结点含有两个指针域,一个指针指向其前驱结点;另一个指针指向其后继结点。双向链表结点的结构下图(a)所示。
双向循环链表:如果将双向链表第一个结点的prev指针指向最后一个结点,将最后一个结点的next指针与指向第一个结点,就构成了双向循环链表。下图(b)和(c)是双向链表和双向循环表的逻辑结构示意图。
关注下方微信公众号,在线模考后查看
热门试题
- 把下列二叉树还原为森林。
- 一棵度为2的树与一棵二叉树有何区别?
- 在具有n个元素的循环队列中,队满时具有(
- n个顶点的强连通图的边数至少有()。
- 在单链表中,除了首元结点外,任一结点的存
- 下列选项中是C语言中的计算字符串长度的是
- 用数组A[0 … m-1]来存放循环队列
- 简述以下算法的功能(栈和队列的元素类型均
- 若频繁地对线性表进行插入与删除操作,该线
- 利用树的孩子兄弟表示法存储,可以将一棵树
- 串下面关于串的的叙述中,()是不正确的?
- 设计判断两个二叉树是否相同的算法。
- 排序的平均时间复杂度为O(n•
- 简述顺序表和链表存储方式的特点。
- 分析以下程序段的时间复杂度。
- 在用单链表表示的链式队列中,队头在链表的
- 有一个顺序存储的栈,最大存储空间MaxS
- 链栈与顺序栈相比有一个明显的优点,即()
- 给定一棵用链表表示的二叉树,其根结点为r
- 试编写出将两个顺序存储的有序表A和B合成