删除排序链表中的重复元素
2017-03-26 15:55
288 查看
问题描述:
给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例:给出1->1->2->NULL;返回1->2->NULL。
实现思路:
先考虑链表为空时的特殊情况;再考虑一般情况:定义两个指针变量p和q,初始时,P指向链表中的第一个元素,q指向链表中的第二个元素。如果p和q的值相等时,就删除q指针指向的节点。如果p和q的值不相等,则分别向后移一个节点。代码:
ListNode *deleteDuplicates(ListNode *head) {if (head == NULL) {
return head;
}
ListNode *p, *q;
p = head;
q = head->next;
while (q != NULL) {
if ( p->val == q->val ) {
p->next = q->next;
q = q->next;
} else {
p = q;
q = q->next;
}
}
return head;
}
感想:
一开始只定义了一个指针变量,当重复的元素超过两个时就无法删除所有的重复元素只留下一个。定义两个指针变量,先固定一个指针P,另一个指针向后移动,直到删除所有与P指向的节点有相同值的节点。然后p和q再分别向后移动一个节点。
相关文章推荐
- leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)
- LintCode-删除排序链表中的重复元素
- <LeetCode> 题112:删除排序链表中的重复元素
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素
- LintCode-剑指Offer-(112)删除排序链表中的重复元素
- 排序链表中删除重复元素II
- Lintcode112.删除排序链表中的重复元素
- LintCode 删除排序链表中的重复元素
- 删除排序链表中的重复元素-LintCode
- 容易 删除排序链表中的重复元素
- 题目:删除排序链表中的重复元素
- lintcode ----删除排序链表中的重复元素
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素
- LintCode_112_删除排序链表中重复的元素
- 删除排序链表中的重复元素
- 删除已排序单链表中重复的元素
- 作业2.112:删除排序链表中的重复元素
- 删除排序链表中的重复元素