#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef struct node *pnode;
struct node
{
int data;
pnode next;
};
pnode head;
pnode create()
{
pnode t = (pnode)malloc(sizeof(struct node));
t->next = NULL;
return t;
}
void insert(pnode head, int n)
{
pnode t = create();
t->data = n;
t->next = head->next;
head->next = t;
}
void print(pnode head)
{
if(head == NULL || head->next == NULL)
{
cout << "list is empty\n";
}
pnode p = head->next;
while(p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << "\n";
}
int main()
{
// system("chcp 65001");
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
freopen("C:/Users/zhaochen/Desktop/input.txt", "r", stdin);
head = create();
insert(head, 2);
insert(head, 1);
insert(head, 3);
insert(head, 1);
insert(head, 2);
insert(head, 2);
insert(head, 3);
print(head);
pnode p = head->next;
pnode pre = head;
unordered_set<int>s;
while(p != NULL)
{
int data = p->data;
if(s.find(data) == s.end())
{
s.insert(data);
pre = pre->next;
p = p->next;
}
else
{
pre->next = p->next;
free(p);
p = pre->next;
}
}
cout << "删除后:\n";
print(head);
return 0;
}
删除单链表中重复元素
最新推荐文章于 2023-06-13 09:36:02 发布