[C言語][LeetCode][82]Remove Duplicates from Sorted List II
1997 ワード
タイトル
Remove Duplicates from Sorted List II Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 2->3.
タブ
Linked List
難易度
中程度
ぶんせき
タイトルは、順序付けされた単一チェーンテーブルを指定し、重複するノードをすべて削除し、重複するノード自体を含め、新しいチェーンテーブルに戻ることを意味します.最終的なヘッダノードを記録するノードを作成します.
Cコード実装
struct ListNode* deleteDuplicates(struct ListNode* head)
{
struct ListNode *p, *q, *ret;
struct ListNode * list = (struct ListNode *)malloc(sizeof(struct ListNode));
p = head;
q = list;
while(p)
{
if(p->next && (p->val == p->next->val))
{
while(p->next && (p->val == p->next->val))
{
p = p->next;
}
}
else
{
q->next = p;
q = p;
}
p = p->next;
}
if(q)
q->next = NULL;
ret = list->next;
if(list)
free(list);
return ret;
}