BJFUOJ:删除链表中绝对值相等的结点
#include
using namespace std;
set <int> s;
typedef struct Lnode {
int data;
struct Lnode *next;
} Lnode, *Linklist;
void Init_Linklist(Linklist &l) {
l = new Lnode;
l->next = NULL;
}
void Creat_Linklist(Linklist &l, int n) {
Linklist p = l;
Linklist r;
for (int i = 0; i < n; i++) {
r = new Lnode;
cin>>r->data;
r->next = p->next;
p->next = r;
p = r;
}
}
void DelEqu(Linklist &l){
Linklist pre = l,p = l->next;
while(p){
if(s.count(abs(p->data)) == 0){
s.insert(abs(p->data));
pre = p;
p = p->next;
}else{
pre->next = p->next;
p = p->next;
}
}
}
void Out(Linklist &l){
Linklist p = l->next;
while(p->next){
cout<<p->data<<" ";
p = p->next;
}
cout<<p->data<<endl;
}
int main() {
while(1){
s.clear();
int n;
cin>>n;
if(n == 0) break;
Linklist l;
Init_Linklist(l);
Creat_Linklist(l,n);
DelEqu(l);
Out(l);
}
return 0;
}