题目描述
给定n个整数,按输入顺序建立单链表,删除其中的重复数字,输出结果链表。(要求不可以构建新结点,不可以定义新链表。在原链表上删除。)
输入
测试次数t
每组测试数据一行:
n(表示有n个整数),后跟n个数字
输出
对每组测试数据,输出删除重复数字后的结果链表表长和每个元素,具体格式见样例。
输入样例
3
10 1 2 3 4 1 2 10 20 30 20
5 1 1 1 1 1
6 20 22 22 22 22 20
输出样例
7: 1 2 3 4 10 20 30
1: 1
2: 20 22
代码
#include<iostream>
using namespace std;
typedef struct LNode {
int data;
struct LNode *next = nullptr;
} LNode, *Linklist;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
Linklist L;
L = new LNode;
L->next = NULL;
LNode *r = L;
for (int i = 0; i < n; i++) {
int num;
cin >> num;
LNode *tmp = L;
bool dup = false;
while (tmp) {
if (tmp->data == num) {
dup = true;
break;
}
tmp = tmp->next;
}
if (dup) {
continue;
} else {
r->next = new LNode;
r->next->data = num;
r = r->next;
r->next = nullptr;
}
}
int len = 0;
LNode *p = L->next;
LNode *q = L->next;
while (q != NULL) {
q = q->next;
len++;
}
delete q;
cout << len << ":";
while (p != NULL) {
cout << " " << p->data;
p = p->next;
}
delete p;
cout << endl;
}
}