weixin_45490561 2019-11-12 22:22 采纳率: 0%
浏览 444

单链表中我想删除一个数据域的值为x的节点编写了这个函数运行出来不能实现这个功能请问为什么?大佬们

void SC(splist*L)
{
    printf("请输入要删除的数");
    int a;
    scanf("%d",&a);
    splist *p;
    splist *h;
    p=L->next;
    while(p!=NULL)
    {
        if(p->data=a)
        {
            L->next=L->next->next;
            h=p;
            free(h);
            break;
        }
        else if(p->next->data=a)
        {
            p->next=p->next->next;
            break;
        }
        p=p->next;
    }
}
  • 写回答

3条回答

  • 旧时光~ 2019-11-13 09:10
    关注

    if里 应该操作 p吧 不应该操作l,而且else if里 p->next可能是null。
    个人的一点建议
    单链表删除结点,你可以让
    1.p指向前一个结点,h指向当前操作结点
    2.判断h->data是否等于a
    3.若等于a 让p后继指向h后继,然后释放h p->next=h->next;free(h);
    4.若不等于a 让p和h都向后移动 p=p->next; h=h->next;

    评论

报告相同问题?

悬赏问题

  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用