题解 | #牛牛的链表删除#
牛牛的链表删除
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;
}
查看12道真题和解析