2.11.5 对单向链表的插入操作
在链表的第i个节点的后面插入一个新节点的基本算法如下:
(1)定位第i个节点。让指针q指向第i个节点,指针p指向需要插入的节点。
(2)链接后面指针。p-link = q->link。
(3)链接前面指针。q->link=p。
具体操作如图2.16 所示。如图2.17 所示是在第i个节点之后插入新节点后链表的状态。
|
| 图2.16 在第i个节点的后面插入数据节点的过程 |
|
| (点击查看大图)图 2.17 在第i个节点之后插入新数据节点后链表的状态 |
根据上述算法的基本思想,可以写出在链表第i 个节点之后插入一个新数据节点p 的程序如下:
- insert_node(NODE *head, NODE *p, int i)
- {
- NODE *q;
- int n=0;
- for(q=head; n<i&&q->link!=NULL;++n)
- qq=q-link; /*(1)定位第i 个节点*/
- p->link=q->link; /*(2)链接后面指针*/
- q->link=p; /*(3)链接前面指针*/
- }