这是我做的第一个需要处理第一个节点的链表题目,参考了下Disuss里面的答案。应该使用 ListNode* dummy = new ListNode(0)创建一个虚拟节点来表示头节点的前一个节点。
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode *node;
ListNode *dummy = new ListNode(0); //动态创建一个val为0的虚拟节点 dummy
dummy->next = head;
node = dummy;
while(node && node->next && node->next->next)
{
if(node->next->val == node->next->next->val)
{
ListNode *temp;
while(node->next && node->next->next && node->next->val == node->next->next->val)
{
temp = node->next;
node->next = node->next->next;
delete temp;
}
temp = node->next;
node->next = node->next->next;
delete temp;
}
else
node = node->next;
}
return dummy->next;
}
};