> 文章列表 > 2.3.2 单链表的插入结点操作

2.3.2 单链表的插入结点操作

2.3.2 单链表的插入结点操作

--单链表示意图

一、按位序插入(带头结点

表头插入

 注意点

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值