美文网首页
递归删除链表节点

递归删除链表节点

作者: lutl | 来源:发表于2019-02-26 22:05 被阅读0次

大家不要点进来看,只是自己留档,语言表达能力不行,但是我还是要发
自以为链表学得不算多好,至少也不差,直到复习看到了递归删除

void del_list(LinkList *&L, ElemType x) {
    LNode *p = (LNode *)malloc(sizeof(LNode));
    if (L == NULL) {
        return;
    }
    if (L->data == x) {
        p = L;
        L = L->next;  //精髓所在
        free(p);
        del_list(L, x);
    }
    else {
        del_list(L->next, x);
    }
}

第一眼看上去,我觉得链表是给删断了
递归删除并没有像普通删除那样,需要知道删除节点的前驱节点,然后让p->next=p->next->next
代码的精髓就在于引用,直接对地址进行操作在L=L->next的时候,直接就把被删除节点盖过去了,当然free还是要free的
例如:1、2、3、4
我们要对3进行删除,在L->data为2时,进入else传入L->next
2的next指向3,此时L是3也是2的next,因为这是引用对地址的操作
所以在L=L->next时,就变成了 2->next=3=3->next,不需要知道前驱节点,也可以直接删除

相关文章

  • 数据结构与算法之链表面试题(四)

    目录 删除链表中的节点反转一个链表递归实现迭代(非递归)实现 一 删除链表中的节点 237. 删除链表中的节点 说...

  • 常见的面试编程题--链表+树

    通过递归实现创建一个链表 Node节点的定义 递归创建链表 给定value值删除链表中出现的所有节点,存在多个相同...

  • 单向链表算法

    单向链表 反转单向链表 单链表查找倒数第k个节点 单链表递归倒序打印 单链表排序 单链表删除重复节点

  • 递归删除链表节点

    大家不要点进来看,只是自己留档,语言表达能力不行,但是我还是要发自以为链表学得不算多好,至少也不差,直到复习看到了...

  • chap2 线性表-链表

    链表 1. 递归算法,删除不带头节点的单链表中所有值为x的点 2 . 带有头结点的单链表,删除所有值满足特定条件的...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

  • 18-删除链表节点、删除链表重复节点

    1. 删除链表节点 2. 删除链表中的重复节点 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没...

  • 链表-链表删除

    链表删除注意点 链表作为函数出口返回 删除首节点 删除中间节点注意保护 代码实现

  • 链表相关算法 - go语言实现

    链表结构 反转链表 (移除节点)删除链表中等于给定值 val 的所有节点 合并两个有序链表 链表成环检测 删除链表...

  • leecode刷题(21)-- 删除链表的倒数第N个节点

    leecode刷题(21)-- 删除链表的倒数第N个节点 删除链表的倒数第N个节点 描述: 给定一个链表,删除链表...

网友评论

      本文标题:递归删除链表节点

      本文链接:https://www.haomeiwen.com/subject/cattuqtx.html