0
点赞
收藏
分享

微信扫一扫

【c++】删除链表中的元素

悲催博士僧 2022-01-23 阅读 40

删除链表中的元素
时间限制: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;
}
举报

相关推荐

0 条评论