单链表的初始化 (带头结点的单链表)
即构造一个如图的空表
算法步骤
1.生成新结点作头结点,用头指针L指向头结点
2.将头结点的指针域置空
算法描述
绿色字体为C语言语法
判断链表是否为空
空表:链表中无元素,称为空链表(头指针和头结点仍然存在)
算法思路
单链表的销毁
算法思路
从头指针开始,依次释放所有节点。
清空单链表 (链表仍存在,但链表中无元素,成为空链表)(头指针和头结点仍然在)
算法思路
依次释放所有节点,并将头结点指针域设置为空
反复执行 delete p; p=q; q=q->next;
结束条件:p ==NULL;
算法
求单链表的表长
算法思路
从首元结点开始,依次计数所有结点。
算法
int Listlength_L(LinkList L){ //返回L中数据元素的个数
LinkList p;
p =L->next; // p指向第一个结点
i=0;
while(p){ // 遍历单链表,统计结点数
i++;
p = p->next;
}
return i;
取单链表中第i个元素的内容
算法思路
从头指针开始,顺着指针链一个一个往后找,直到找到第i个为止。单链表是顺序存取,不能像顺序表
那样直接取出某一个元素。
算法步骤
算法描述
按值查找 (获取地址)
算法思路
从首元结点开始,逐个比较值的大小。找到之后返回地址。
算法描述
按值查找 (获取位置序号)
算法描述
算法- 插入 在第i个结点前插入值为e的新结点
算法步骤
算法描述
删除- 删除第i个结点
算法步骤
算法描述
建立单链表:头插法–元素插在链表头部
1.从一个空表开始,重复读入数据
2.生成新结点。将读入的数据存放到新结点的数据域中。
3.从最后一个结点开始,依次将各结点插入到链表的前端。
算法思路
算法描述
算法的时间复杂度为O(n)