zzk.213 2022-10-06 15:45 采纳率: 87.8%
浏览 49
已结题

这个删除链表中所有x要怎么实现 我写完之后这个for循环在第二三种情况下停不下来

img


int DeleteNodes(Node** phead, double x) {
    Node* prev = NULL;
    Node*** pphead = &phead;
    int count = 0;
    for (int pos = 1; currNode; prev = currNode, currNode = currNode->next) {
        if (currNode->data == x) {
            if (prev) {
                prev->next = currNode->next;
                free(currNode);
                count++;
                currNode = prev;

            }
            else {
                *phead = currNode->next;
                free(currNode);
                count++;
                currNode = **pphead;
                if (currNode->next == NULL)
                    free(currNode);
            }
        }
    }
    return count;
}*/

  • 写回答

2条回答 默认 最新

  • 快乐鹦鹉 2022-10-06 17:04
    关注
     
    int DeleteNodes(Node** phead, double x) {
            int count = 0;
            Node* current =*phead;
            Node* pre=NULL;
            while (current != NULL) {
                if (current->data == x) {
                    if (pre == NULL) {
                            //如果删除的节点是头结点,那么原来链表的第二个节点就是头节点,此时pre依旧是NULL
                        *phead = current->next;
                        count++;
                         free(current);
                         current = *phead;
                    }
                    else {
                            //删除的节点不是头结点,那么pre的下一个节点就是当前节点的下一个节点
                        pre->next = current->next;
                        count++;
                        free(current);
                        current = pre->next;
                    }
                }
                else {
                    pre = current;
                    current = current->next;
                }
               
            }
            return count;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月6日

悬赏问题

  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型