2.11.5 对单向链表的插入操作

2013-10-12 07:02:39 · 作者: · 浏览: 108

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 的程序如下:

  1. insert_node(NODE *head, NODE *p, int i)  
  2. {  
  3. NODE *q;  
  4. int n=0;  
  5. for(q=head; n<i&&q->link!=NULL;++n)  
  6. qq=q-link; /*(1)定位第i 个节点*/  
  7. p->link=q->link; /*(2)链接后面指针*/  
  8. q->link=p; /*(3)链接前面指针*/