标签:break return 一个 重复 指针 第一个 解题思路 ica 头结点
class Solution {
public:
ListNode* deleteDuplication(ListNode* pHead)
{
ListNode *preNode, *nowNode, *nextNode;
preNode = pHead;
nowNode = pHead;
nextNode = NULL;
while(nowNode != NULL){
nextNode = nowNode->next;
if(nextNode != NULL){
if(nextNode->val == nowNode->val){
while(nextNode != NULL && nextNode->val == nowNode->val){
nextNode = nextNode->next;
}
if(preNode == nowNode){
//头结点需要改变
pHead = nextNode;
preNode = nextNode;
nowNode = nextNode;
}else{
//删掉中间的重复节点
preNode->next = nextNode;
nowNode = nextNode;
}
}else{
//移动preNode节点到当前节点,nowNode节点指向下一个和当前节点值不同的节点
if(nowNode != preNode){
preNode = nowNode;
nowNode = nextNode;
}else{
//当前节点指向下一个和当前节点值不同的节点
nowNode = nextNode;
}
}
}else{
break;
}
}
return pHead;
}
};
标签:break return 一个 重复 指针 第一个 解题思路 ica 头结点
原文地址:https://www.cnblogs.com/chengsheng/p/10697822.html