surunhe 2023-10-15 16:19 采纳率: 0%
浏览 2

删除重复结点,保留重复结点的第一个

img


用c语言删除链表中的重复结点,并且保留重复结点的第一个
请大家帮我看看这代码有什么问题,为什么就是执行不出来

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-15 19:02
    关注

    【以下回答由 GPT 生成】

    根据你提供的代码,我发现了以下问题: 1. 代码中并没有显示定义 LinkListLnode 的结构体,可能会导致编译错误。 2. 函数内的代码只删除了重复结点的第一个,而没有删除后续的重复结点。 3. 函数在找到重复结点并删除后就返回了,没有继续检查后续是否还存在重复结点。

    根据你的需求,我提供了一个修改后的代码如下:

    typedef struct Node {
        int data;
        struct Node* next;
    } Lnode, *LinkList;
    
    int destroy(LinkList *head) {
        if (*head == NULL || (*head)->next == NULL) {
            return 0;
        }
    
        Lnode* p = (*head)->next;
    
        while (p != NULL) {
            Lnode* q = p;
            while (q->next != NULL) {
                if (p->data == q->next->data) {
                    Lnode* r = q->next;
                    q->next = r->next;
                    free(r);
                } else {
                    q = q->next;
                }
            }
            p = p->next;
        }
    
        return 1;
    }
    

    修改后的代码会继续检查后续是否还有重复结点,并将所有重复的结点删除。同时,定义了 LinkListLnode 的结构体。请你尝试使用以上代码,如果还有其他问题,烦请提供相关的错误信息。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月15日

悬赏问题

  • ¥50 ZYNQ7020双核FLAHS烧写的问题
  • ¥20 ue 5 中想要实现第一人称人物左右行走摆动的效果,摄像头只向右摆动一次(关键词-结点)
  • ¥15 钢岔管添加弹性约束模拟围岩作用
  • ¥15 AD9164瞬时带宽1.8G,怎么计算出来?
  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除
  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数