问题描写叙述:
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
思路:遍历链表,通过两个指针保存当前位置和当前位置的前一个位置。假设两指针所指节点的值相等。则删除当前节点。假设不等。则将两指针前移。
代码:
if(head == NULL)
return NULL;
ListNode * pre = head;
ListNode * cur = head->next;
while(cur != NULL)
{
if(pre->val == cur->val)
{
pre->next = cur->next;
cur = cur->next;
}
else
{
pre = pre->next;
cur = cur->next;
}
}