设为首页 加入收藏

TOP

2.11.4 对单向链表的删除操作
2013-10-12 07:02:37 来源: 作者: 【 】 浏览:102
Tags:2.11.4 单向 删除 操作

2.11.4 对单向链表的删除操作

要删除链表中第i个节点的基本算法如下:

(1)定位第i-1个节点。指针q 指向第i-1个节点,指针p指向被删除的节点。

(2)摘链。q->link = p->link。

(3)释放p节点。free(p)。

具体操作过程如图2.14 所示。如图2.15所示是删除第i个节点后链表的状态。

 
(点击查看大图)图2.14 删除第i个节点的过程
 
(点击查看大图)图2.15 删除第i个节点后链表的状态
根据上述算法的基本思想,可以写出删除链表中第i个节点的程序如下:

  1. delete_node(NODE *head, int i)  
  2. {  
  3. NODE *q, *p;  
  4. int n;  
  5. for(n=0,q=head;n<i-1&&q->link!=NULL;++n)  
  6. qq = q->link; /*(1)定位第i-1 个节点*/  
  7. if(i<0&&q->link!=NULL)  
  8. {  
  9. p = q->link; /*p指向被删除的第i 个节点*/  
  10. q->link = p->link; /*(2)摘链*/  
  11. free(p); /*(3)释放p节点*/  
  12. }  


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.11.5 对单向链表的插入操作 下一篇2.11.6 循环链表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: