把一个单链表中键值绝对值和之前的节点重复的节点删除,并接到另一个新链表中
刚开始写链表操作,比较麻烦,然后不知道哪里搞错了,部分错误
后来想到可以直接用队列保存两个链表,中间操作一下子就简单了,轻松满分
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cctype>
#include<queue>
using namespace std;
const int N=1000000+10;
int key[N],next0[N];
bool vis[10010];
struct node
{
int a,b;
node(int aa,int bb)
{
a=aa;b=bb;
}
};
int main()
{
int sta,n,sta0,end0;
int a,b,c;
scanf("%d%d",&sta,&n);
while(n--)
{
scanf("%d%d%d",&a,&b,&c);
key[a]=b;
next0[a]=c;
}
memset(vis,false,sizeof(vis));
bool flag=false;
int t=sta;
queue<node> q,q0;
while(t!=-1)
{
int k=abs(key[t]);
if(vis[k]) q0.push(node(t,key[t]));
else q.push(node(t,key[t]));
vis[k]=true;
t=next0[t];