首页 > 其他 > 详细

单链表(四)

时间:2019-08-17 12:18:17      阅读:106      评论:0      收藏:0      [点我收藏+]

前面分享了在任意位置插入新的数据节点,今天分享删除任意节点。

 

技术分享图片

如图,定义了两个结构体指针p和q,p指向第一个数据节点,q指向p的前面一个,p的作用就是找到需要删除的数据节点,而q则是用来将p指向的数据节点里面存放的下一个数据节点的地址拿给q指向的数据节点,这样保证删除了之后,后面的节点不会消失。

找到需要删除的数据节点,和前面找到插入的位置的方法一样

代码如下:

void node_delete(node *head, int l) // L用来指明需要删除第几个节点
{
    node *p,*q;  //定义两个指针
    int n = 0;    //n用来找删除的节点是否和L区配
    q = head;  //q指向头节点
    p = head->next;//p指向第一个数据节点
    while (p != NULL)  
    {
        n++;
        if (n == l)  //如果找到删除的节点
        {
            q->next = p->next;  //将p指向的删除节点里面装的地址给q指向的节点
            free(p); //删除p指向的节点
            break;  //停止循环
        }
        q = q->next;  // p,q依次向后移动,直到找到删除的节点为止
        p = p->next;
    }
}

 

有了删除节点的基础,后面继续分享如何删除一个链表里面数据最大的节点。

单链表(四)

原文:https://www.cnblogs.com/hzb1224/p/11367820.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!