删除链表中的元素
时间限制:1秒 内存限制:128M
题目描述
给定N个整数,从前往后删除与M相同的结点的下一个结点(如果被删的结点为M则它后面的不处理)。
输入描述
输入包含3行:
第一行是一个整数n(1 <= n <= 200000),代表数组中元素的个数。
第二行包含n个整数,代表数组中的n个元素。每个整数之间用空格分隔;每个整数的取值在32位有符号整数范围以内。
第三行是一个整数M
输出描述
输出只有1行:
将链表内所有待删除元素删除以后,输出链表内的剩余元素的值,每个整数之间用空格分隔。
样例
输入
20
1 3 3 0 -3 5 6 8 3 10 22 -1 3 5 11 20 100 3 9 3
3
输出
1 3 0 -3 5 6 8 3 22 -1 3 11 20 100 3 3
AC代码:
#include <iostream>
using namespace std;
struct node{
int deta;
int next;
}a[2000005];
int main(){
int x,n,head=-1,t,k=0;
cin>>n;
cin>>t;
a[0].deta=t;
a[0].next=-1;
head=0;
k++;
for(int i=0;i<n-1;i++){
cin>>t;
a[k].deta=t;
a[k].next=-1;
a[k-1].next=k;
k++;
}
cin>>x;
for(int i=head;i!=-1;i=a[i].next){
if(a[i].deta==x&&a[i].next!=-1){
a[i].next=a[a[i].next].next;
}
}
for(int i=head;i!=-1;i=a[i].next){
cout<<a[i].deta<<" ";
}
cout<<endl;
return 0;
}