1.线性表的链式存储结构特点?
用一组任意的存储单元存储线性表的数据单元,这组存储单元可以是连续的,也可以是不连续的。这意味着,这些数据元素,可以存在内存未被占用的任意片段。
2.结点(Node)由哪两部分信息组成?
存储信息数据元素的域,即数据域。
存储直接后继位置的域,即指针域。
3.头指针
头指针是指链表指向第一个结点的指针,若链表有头结点,则是指向头节点的指针。头指针一般具有标识作用,所以常常用头指针冠以链表
4.头结点
头节点是为了操作的统一和方便而设立的,放在第一元素的节点之前,其数据域一般无意义(也可以存放链表的长度)。
头节点不一定是链表必须要素
5.线性表的单链表存储结构
typedef struct Node
{
ElemType data;
struct Node *next;
}Node;
typedef struct Node *LinkList; //定义LinkList
6.获取第i个数据的算法
(1)声明一个结点p指向链表的第一个结点,初始化结点j从1开始
(2)当j<i时,就遍历链表,让p的指针向后移动,不断指向下一个结点,j累加1
(3)若到链表末尾p为空,则说明第i个元素不存在
(4)否则查找成功,返回结点p的数据。
7.单链表的插入
假设存储元素e的结点为s,要实现结点p、p->next和s之间的逻辑关系,只需要将结点s插入到结点p和p->next之间就行了。
8.单链表的删除
假设存储元素ai的结点为q,要实现结点q删除单链表的操作,其实就是将他的前继结点的指针绕过,指向它的后继结点即可。
9.单链表与线性表相比,优势是什么?
对于删除与插入数据越频繁的操作,单链表的效率优势就越是明显。
10.单链表整表创建的思路?
(1)头插法(2)尾插法