--单链表示意图
一、按位序插入(带头结点)
①表头插入
注意点
1.i=1,while循环不执行
2.时间复杂度为O(1)
3.p!=NULL表示指针p有指向结点
4.头结点为第0个结点
5.p=L表示指针p和L指向位置相同(头结点),p等于L
6.代码段理解
--malloc函数创建新空间,赋给结点s
--e赋值给结点s.data
--结点s的指针指向.next和结点p的指针指向(p.next)的位置相同(a1.data)
7.代码绿黄不能替换顺序,替换后变为指向s自己
②表中插入
注意点:
1.i=3,while循环执行2次,p指向第2个结点,p=p->next表示p依次往后扫描
2.s.next指向a3.data
③表尾插入
注意点:
1.j表示p当前指向第几个结点,所以需要累加找到i-1个位置
2.循环表示找到第i-个结点,因为要在该结点后插入新结点
3.s.next指向NULL
4.时间复杂度为最坏O(n),n表示表的长度
5.i>6,i值不合理,return false
二、按位序插入(不带头结点)
①插在表头
--L=s,更改头指针L
②不插在表头
三、指点结点的后插操作
注意点:
1.指定结点的后续结点是可知的
2.时间复杂度为O(1)
3.内存分配问题
四、指定结点的前插操作
①插入头指针法
②直接改变指定结点的前驱结点的data值