删除链表中重复的结点
2020-04-29 本文已影响0人
李伟13
题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
第一想法
- 创建一个保存头的头节点n,用来返回
- 一个保存不重复节点的节点p
- 一个用来移动检测是否重复的节点q
AC代码
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
ListNode *q,*n;
ListNode* p = new ListNode(1);
p -> next = pHead;
n = p;
q = pHead;
if(q == NULL && q -> next == NULL)
return q;
while(q){
if(q -> next != NULL && q -> next -> val == q -> val){
while(q -> next != NULL && q -> next -> val == q -> val)
q = q -> next;
p -> next = q -> next;
q = q -> next;
}
else{
p = p -> next;
q = q -> next;
}
}
return n -> next;
}
};