【问题描述】单链表中存放了若干整数,请删除相同整数。
【输入形式】单链表
【输出形式】删除相同整数后的单链表
【样例输入】1 1 1 2 3
【样例输出】1 2 3
【样例说明】以递增的形式输入数据,允许相同元素
【评分标准】
#include <stdlib.h>
#include <iostream>
using namespace std;
// 类型定义
#include <stdlib.h>
struct LNode
{
int data;
LNode *next;
};
typedef LNode *LinkList;
// 尾插入法创建单链表
void createList(LinkList &h, int n)
{
h = new LNode;
h->next = NULL;
LNode *p, *r;
r = h;
for (int i = 1; i <= n; i++)
{
p = new LNode;
cin >> p->data;
r->next = p;
r = p;
}
r->next = NULL;
}
// 打印单链表
void printList(LinkList h)
{
LNode *p = h->next;
while (p)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
// 删除单链表中的重复元素
void listDeleteRepeat(LinkList h)
{
LNode *p = h->next;
while (p)
{
LNode *q = p;
while (q->next)
{
if (q->next->data == p->data)
{
LNode *tmp = q->next;
q->next = q->next->next;
delete tmp;
}
else
{
q = q->next;
}
}
p = p->next;
}
}
int main()
{
LinkList h;
createList(h, 5); // 创建单链表
listDeleteRepeat(h); // 删除重复元素
printList(h); // 打印单链表
return 0;
}