#题目描述#
给定n个整数,按输入顺序建立单链表,删除其中的重复数字,输出结果链表。(要求不可以构建新结点,不可以定义新链表。在原链表上删除。)
#include<iostream>
using namespace std;
class node
{
public:
int data;
node* next;
node() {
data = 0;
next = NULL;
}
};
class linklist
{
public:
node* head;
int len;
linklist()
{
len = 0;
head = NULL;
}
void creat(int n)
{
len = n;
node* r = new node;
node* p = r;
while (n--)
{
int x;
cin >> x;
node* q = new node;
q->data = x;
p->next = q;
p = q;
}
head = r;
}
void find()
{
node* p = head->next;
while (p)
{
node* q = p->next;
int x = p->data;
while (q)
{
if (q->data == x)
{
node* r1 = head;
while (r1->next != q)
{
r1 = r1->next;
if (r1->next == q)
{
r1->next = r1->next->next;
len--;
break;
}
}
}
q = q->next;
}
p = p->next;
}
}
void print()
{
cout << len << ":";
node* p = head->next;
while (p)
{
cout << " " << p->data;
p = p->next;
}
cout << endl;
}
};
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
linklist a;
a.creat(n);
a.find();
a.print();
}
}