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

牛牛的链表删除

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

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

typedef struct node
{
    int num;
    struct node* next;
} Node;

Node* create_list(int num)
{
    Node* head=(Node*)malloc(sizeof(Node));
    head->num=num;
    head->next=0;
    return head;
}

void add_node(Node* head,int num)
{
    Node* p=(Node*)malloc(sizeof(Node));
    p->num=num;
    p->next=0;
    Node* q=head;
    while(q->next)
    {
        q=q->next;
    }
    q->next=p;
}

Node* delete(Node* head,int x)
{
    Node* dummy=(Node*)malloc(sizeof(Node));
    dummy->next=head;
    Node* prev=dummy;
    Node* cur=prev->next;
    while(cur)
    {
        if(cur->num==x)
        {
            prev->next=cur->next;
            free(cur);
            cur=prev->next;
        }
        else {
            prev=cur;
            cur=cur->next;
        }
    }
    head=dummy->next;
    free(dummy);
    return head;
}

int main() {
    int n,x;
    scanf("%d%d",&n,&x);
    int t;
    scanf("%d",&t);
    Node* head=create_list(t);
    for(int i=1;i<n;i++)
    {
        scanf("%d",&t);
        add_node(head,t);
    }
    head=delete(head,x);
    Node* ptr=head;
    while(ptr)
    {
        printf("%d ",ptr->num);
        Node* q=ptr;
        ptr=ptr->next;
        free(q);
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务