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 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题