这道题需要有两个及两个以上的节点才可以进行,需要两个指针,一个指当前的节点,一个指后面的节点:如果是相等节点,当前节点不动,后面的节点向后移动;遇到不相等的节点,当前节点指向后面的节点,后面的节点再指向下一个。这样循环,直到链表结束。
class ListNode {
public:
int val;
ListNode *next;
ListNode(int val) {
this->val = val;
this->next = NULL;
}
};
class Solution {
public:
/*
* @param head: head is the head of the linked list
* @return: head of linked list
*/
ListNode *deleteDuplicates(ListNode *head) {
// write your code here
if(head == NULL || head->next == NULL)
{
return head;
}
ListNode *p = head;
ListNode *q = head->next;
while(q != NULL)
{
if(q->val == p->val)
{
q = q->next;
}
else
{
p->next = q;
p = q;
q = q->next;
}
}
p->next = NULL;
return head;
}
};
2018/1/24