题解 | #牛牛的链表删除#

牛牛的链表删除

http://www.nowcoder.com/practice/d3df844baa8a4c139e103ca1b1faae0f

莫名其妙就通过了,但是测试用例没有通过。

我不理解。

尾部结点没有办法去除还是。

看注释。

#include<stdio.h>
#include<stdlib.h>



int n,x,val;

struct ListNode
{
    int data;   
    struct list_node *next;  
};

typedef struct ListNode gut;

gut *creat_list_node(int c_data )
{   
    gut *HeadNode=NULL;
    gut *new_node=HeadNode;
    new_node=(gut*)malloc(sizeof(gut));
    memset(new_node,0,sizeof(gut));
    
    new_node->data=c_data;
    new_node->next=NULL;
    
    return new_node;
}

/*gut *forward_node(gut *HeadNode,int f_data)//头插
{
    gut *new_node=creat_list_node(f_data);
    gut *insert_node=HeadNode;
    new_node->next=insert_node->next;
    insert_node->next=new_node;
    
    return insert_node;
}*/



gut *tail_node(gut *HeadNode, int t_data)//尾插
{
    gut *new_node=creat_list_node(t_data);
    gut *insert_node=HeadNode;
    
    while(insert_node->next!=NULL)
    {
        insert_node=insert_node->next;
    }
    insert_node->next=new_node;
    
    return insert_node;
    
}

gut *print_node(gut *HeadNode)
{
    gut *pri_node=HeadNode->next;
    while(pri_node!=NULL)
    {
        printf("%d ",pri_node->data);
        pri_node=pri_node->next;
    }
    printf("\n");
    
    return pri_node->data;
    
}



gut *delete_node(gut *HeadNode, int d_data,int del_data)
{
    gut *del_node=HeadNode->next;
    gut *temp=del_node->next;  
    while(temp ->next!=NULL)
    {
        if(temp->data!=del_data)//不是要去除的数据,指针指向下一个位置。
        {
          del_node=del_node->next;
          temp=temp->next;
        }
        else//是要去除的数据
        {  
            if(temp->next!= NULL)
            {
                del_node->next=temp->next; //被去除结点的前一个结点的下一个结点指向被去除的结点的下一个结点。
                free(temp);//放掉被去除结点的内存
            }           
                else
            del_node=del_node->next;
        }
        
    }
    
    return del_node ;
}






int main()
{
   
    scanf("%d %d\n",&n,&x);
    { gut *HeadNode=creat_list_node(n);
        for(int i=0;i<n;i++)
        {
            scanf("%d ",&val);
            tail_node(HeadNode,val);
        }
            
            delete_node(HeadNode,n,x);            
            print_node(HeadNode);
        free(HeadNode);    
    }
    
    
}

全部评论

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务