单链表中我想删除一个数据域的值为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个回答

if(p->data=a)
->
if(p->data==a)

else if(p->next->data=a)
->
else if(p->next->data==a)

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;

void SC(splist*L)
{
    printf("请输入要删除的数");
    int a;
    scanf("%d",&a);
    splist *pre=L;
    splist *p=pre->next;
    while(p!=NULL)
    {
        if(p->data==a)
        {
            pre->next=p->next;
            free(p);
            p=pre->next;
            break;
        }
        else
        {
            pre=p;
            p=p->next;
        }
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问

相似问题

2
数据结构中,单链表节点初始化问题
2
【数据结构】求助:一个简单的单链表问题
0
单链表的插入,删除,基本问题!着急!!!
0
设计算法统计循环单链表中结点的关键字值为x的结点信息(包括结点位置和结点个数)
4
问一个很愚蠢的基础问题,p=p->next链表循环里,为什么这样不会覆盖掉链表的值啊
2
很简单的一个关于单链表的问题
1
请问单链表如何找到最小节点的位置
0
在单链表中统计某区域内的元素,将获得元素插入新单链表,并打印新链表元素在原链表中的序号
2
c++单链表创建新结点时不能输出值
1
C语言,我明明把单链表的某个节点删除了,但单链表写入文件时还是会写入一些奇怪的东西?
3
带头结点的循环/非循环单链表删除开始结点的时间复杂度
0
单链表实现的多项式加减法计算,输入的负号变成了正号,并且幂为负时显示错误,这个程序应该怎么改?
1
写了链表插入函数 主函数却没实现插入功能
1
单链表中删除节点后游离的节点怎么释放内存空间,不能用free,系统会自动回收吗?
1
有一个单链表L,假设结点值为整,怎么设计一个尽可能高效的算法将所有值小于0的结点移到所有值大于0的结点前面?
1
c语言单链表每次进行查找操作和排序操作的时候程序就闪退
1
如何正确创建一个单链表(学生表)?
2
一、 创建一个字符单链表,实现对字符的插入、删除、查找、元素个数的统计等基本操作,要求为用户提供选择式菜单?
0
单链表中的插入和删除