删除单链表指定结点出现段错误?

Posted littlelittletiger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除单链表指定结点出现段错误?相关的知识,希望对你有一定的参考价值。

起初我是这么写的:

struct node * deletenode(struct node *head,int b)
    struct node *pre,*cur;
    pre=NULL;
    cur=head;
    if(head&&head->data==b)
        head=head->next;
        free(cur);
        
    else
        while(cur->data!=b)
            pre=cur;
            cur=cur->next;
        
        pre->next=cur->next;
        free(cur);    
    
    return head;

结果提交时说段错误,改成下面这样就通过了,暂时还不知道为啥。。。

struct node * deletenode(struct node *head,int b)
    struct node *pre,*cur;
    pre=NULL;
    cur=head;
    if(head&&head->data==b)
        head=head->next;
        free(cur);
        
    else
        while(cur)
        if(cur->data==b)
            pre->next=cur->next;
            free(cur);
         
        pre=cur;
        cur=cur->next;
    
    return head;
    

 

 

以上是关于删除单链表指定结点出现段错误?的主要内容,如果未能解决你的问题,请参考以下文章

数据结构--单链表简单代码实现(总结)

单链表 | | 按位序删除&指定结点删除

单链表及单链表的三个初级算法思想

单链表及单链表的三个初级算法思想

单链表节点类型与单链表数据类型的区别

不带头结点的单链表的插入与删除程序写法