编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
示例1:
输入:[1, 2, 3, 3, 2, 1]
输出:[1, 2, 3]
示例2:
输入:[1, 1, 1, 1, 2]
输出:[1, 2]
提示:
链表长度在[0, 20000]范围内。
链表元素在[0, 20000]范围内。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicate-node-lcci
【提交代码】
1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * struct ListNode *next; 6 * }; 7 */ 8 9 10 struct ListNode* removeDuplicateNodes(struct ListNode* head){ 11 struct ListNode *p; 12 struct ListNode *pre; 13 struct ListNode *cur; 14 int val; 15 16 p = head; 17 18 while( p != NULL ) // 遍历整个链表 19 { 20 pre = p; 21 val = pre->val; 22 23 cur = pre->next; 24 while( cur != NULL ) 25 { 26 if( val == cur->val ) // 如果相同,则删除当前被拿来比较的节点 27 { 28 pre->next = cur->next; 29 } 30 else 31 { 32 pre = pre->next; 33 } 34 cur = cur->next; 35 } 36 37 p = p->next; 38 } 39 40 return head; 41 }