#include "iostream"
using namespace std;
int n,m,sum=0;// n是输入数据的个数 m是所要删除的数据 sum用来记录删除之后所剩的数的个数
const int m_size=100;//设置链表的长度为100
int arr[m_size];//定义链表
//以上的变量可以写在main函数中 为了减少函数调用所需的参数 设置为全局变量可以减少难度
typedef struct Link{
int date;
struct Link *next;
}link;//链表节点的结构体定义
link * init_link(){//此函数用来创建一个单链表并将初始化
link *p=nullptr;//头结点定义
link *temp=(link *)malloc(sizeof(link));//首元结点定义
temp->date=0;
temp->next= nullptr;
p=temp;
for(int i=0;i<n;i++){
link *q=(link *)malloc(sizeof(link));
q->date=arr[i];
q->next=nullptr;
temp->next=q;
temp=temp->next;
}//此for循环将输入的n个数据赋值到链表节点
return p;//返回链表的首地址
}
link * fun(link *l){//实现链表中数据的查找并删除 最后输出(也可以写一个函数 实现输出功能)
link *r=(link *)malloc(sizeof(link));
r=l;
while (n--){//遍历链表
if(r->next->date==m){//若该节点的下一个节点的date值和m相等 进行链表删除操作
link * k= r->next;//表示当前节点
r->next=r->next->next;//进行链表节点的删除
free(k);//释放当前节点 避免内存泄漏
}
else{
r=r->next;//若该节点不满足条件 遍历下一个
}
}
link * v=l;
while (v){//实现剩于节点的计数
sum++;
v=v->next;
}
cout<<sum-1<<endl;
link *w = l->next;
while (w){//实现链表节点数据的shuchu
cout<<w->date<<" ";
w=w->next;
}
return r->next;
}
int main() {
cin>>n;
for(int i=0;i<n;i++)
cin>>arr[i];
cin>>m;
link *P;
P=init_link();
fun(P);
}