AcWing 29. 删除链表中重复的节点
原题链接
简单
作者:
深街酒徒
,
2024-12-02 18:19:28
,
所有人可见
,
阅读 1
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplication(ListNode* head) {
auto h = new ListNode(-1); // 虚结点,作用是避免找不到头结点,防止头结点被删除
auto p = h;
h -> next = head;
auto q = h -> next; // q结点为p结点的后一个结点
while(q)
{
while(q -> next && q -> next -> val == q -> val) q = q -> next;
if(p -> next == q)
{
p = q;
q = q -> next; // 可把if-else语句中的相同语句提出去
}
else
{
p -> next = q -> next;
q = q -> next;
}
}
return h -> next;
}
};