分析一个链表删除函数的bug

作者: SunShine__鹏 | 来源:发表于2018-03-29 12:00 被阅读38次

看了别人写的一个链表删除某个元素的函数,大体功能是正确的,但bug很容易复现,一起来看看:

删除函数

删除链表中为X的节点,看函数中这样写!=X时,节点后移,直到找到等于X的节点;

万一输入的不是X,移到节点的末端也找不到,此时节点还往哪里移动,程序会死在这个while里

我们需要做个误操作处理,在轮询完整个链表后,发现到了结尾还没有要找的元素

我们加上 if( p ->next == NULL ) return L;结束查询,跳出函数,或者再加一句

printf("no find data !");这样是不是就有效避免了这种bug。

欢迎有其他想法的交流,新人勿喷。

相关文章

  • 分析一个链表删除函数的bug

    看了别人写的一个链表删除某个元素的函数,大体功能是正确的,但bug很容易复现,一起来看看: 删除链表中为X的节点,...

  • leecode刷题(20)-- 删除链表中的节点

    leecode刷题(20)-- 删除链表中的节点 删除链表中的节点 描述: 请编写一个函数,使其可以删除某个链表中...

  • LeetCode基础算法-链表

    # LeetCode基础算法-链表 LeetCode 链表 1. 删除链表中的节点 请编写一个函数,使其可以删除某...

  • 面试题18. 删除链表的节点

    删除链表的节点 题目描述 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的...

  • 链表复习(二)

    删除链表函数: 反转链表函数: 循环链表: 注意head代表头结点,也代表尾节点

  • 剑指 Offer 18. 删除链表的节点

    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 思路: 单链表遍...

  • 初级算法-链表-删除链表中的节点

    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为要被删除的节点 。 现有一个链表 ...

  • LeetCode 每日一题 [51] 除链表的节点

    LeetCode 删除链表的节点 [] 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回...

  • 算法-18.删除链表的节点

    给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。 如果是给定一个链表...

  • 链表-链表删除

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

网友评论

  • 阿棍儿_Leon:void LinkedListDelete(LinkedList L, ElementType x)
    {
    Node *p, *pre;
    if (!L) return NULL;
    p = L->next;
    while (p && p->data != x)
    {
    pre = p;
    p = p->next;
    }
    if (p)
    {
    pre->next = p->next;
    free(p);
    }
    }

本文标题:分析一个链表删除函数的bug

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