//数据结构 删除结点(+尾插法)
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode{
int data; //存放元素值
struct LNode *next; //指向后继节点
}LNode,*Linklist;
//尾插法
Linklist Creat_list(int count){
Linklist head = (Linklist)malloc(sizeof(LNode)); //定义头指针
Linklist node=NULL; //定义工作指针
Linklist end=NULL; //定义尾指针
head->next = NULL;
end=head;
// int count,m;
int data; //存放当前结点数据
// scanf("%d",&count); //存放数组长度
// scanf("%d",&m); //存放要删除的元素
for(int i=0;i<count;i++){
scanf("%d",&data);
// if(data!=m){
node = (LNode*)malloc(sizeof(LNode));
node->data = data; //存放结点数据域
end->next = node; //将新结点尾插到链表
end = node; //更新尾结点
// }
}
end->next = NULL;
return head;
}
//删除结点
void del(LNode *L,int m){
LNode *p=L,*q=L->next;
while(q){
if(q->data == m){
p->next=q->next;
free(q);
q=p->next;
}
else{
p=q; q=q->next;
}
}
}
void output(Linklist head){
Linklist a = head->next;
while(a){
printf("%d",a->data);
printf(" ");
a=a->next;
}
}
int main(){
int n,m;
scanf("%d",&n);
scanf("%d",&m);
Linklist head=Creat_list(n);
del(head,m);
output(head);
}