/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
ListNode*head;
head = pHead;
ListNode *p,*q;
p = pHead;
q = p;
bool f = false;
//链表1->2->3->3->4->4->5 处理后为 1->2->5
while(p){
if(p->next && p->val == p->next->val){
//cout<<p->val<<endl;
while(p->next && p->val == p->next->val){
p=p->next;
}
if(q == pHead){
head = p->next;
f = true;
}else{
q->next = p->next;
}
p = p->next;
}
else{
q = p;
p = p->next;
}
}
if (f)
{
return head;
}
return pHead;
}
};
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
最新推荐文章于 2020-09-09 12:23:55 发布
本文介绍了一种在链表中删除所有重复元素的算法实现,通过遍历链表并检查相邻节点的值来确定是否重复,若发现重复则跳过所有相同值的节点,直至链表中仅保留唯一元素。
668

被折叠的 条评论
为什么被折叠?



