题目来自LeetCode。
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
贴代码:
struct ListNode* deleteDuplicates(struct ListNode* head) {
struct ListNode *p, *q, *pHead;
int i = 0, n = 0;
pHead = (struct ListNode*)malloc(sizeof(struct ListNode));
pHead->next = head;
if (head == NULL || head->next == NULL)
{
return head;
}
p = head;
while (p != NULL)
{
p = p->next;
n++;
}
p = pHead;
q = p->next->next;
for (i = 0; i < n; i++)
{
while (q != NULL)
{
if (p->next->val == q->val)
{
p->next->next = q->next;
//free(q);
}
q = q->next;
}
p = p->next;
if (p == NULL || p->next == NULL || p->next->next == NULL)
{
break;
}
q = p->next->next;
}
return head;
}