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

牛牛的链表删除

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);    
    }
    
    
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
06-11 17:39
门头沟学院 Java
小呆呆的大鼻涕:卧槽,用户彻底怒了
点赞 评论 收藏
分享
湫湫湫不会java:写的很杂,连自己都不知道找什么工作的感觉,只是要份工作。针对自己稍微有点优势的方向好好整份简历投投吧,然后这杂的简历就辅助投投,因为自己认为的优势可能也不是很大的优势all in可能失业,自己也没有啥很想的方向还是可以用这通用的碰碰运气吧,加油
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务