问题:定义一个链表结构如下:
 struct ListNode {
 int value;
 struct ListNode *next;
 };
 请写一个程序,实现链表中重复节点的删除(同一值的节点只保留一个),且链表顺序保持不变。如,
 初始链表:3 -> 2 -> 3 -> 4 -> 4 -> 1 -> 7 -> 8
 节点去重后的链表:3 -> 2 -> 4 -> 1 -> 7 -> 8
 注意:初始链表是非排序的链表。
ListNode* head = new ListNode(1);/*ListNode* p = head;for(int i = 2; i <= 5; ++ i){p->next = new ListNode(i);p = p->next;p->next = new ListNode(i);p = p->next;}*/cout<<endl;unordered_set<int> mset;ListNode* nhead = head;ListNode* pre = nullptr;while(nhead){int x = nhead->val;if(!mset.count(x)){mset.insert(x);}else{pre->next = nhead->next;}pre = nhead;nhead = nhead->next;}/*while(head){cout<< head->val << " ";head = head->next;}*/return 0;}
