# 【剑指offer】删除链表中重复的结点

 1 /*
2 struct ListNode {
3     int val;
4     struct ListNode *next;
5     ListNode(int x) :
6         val(x), next(NULL) {
7     }
8 };
9 */
10 class Solution {
11 public:
13         if(pHead == NULL)    return NULL;
14         ListNode* pre = NULL;
16         ListNode* pnext = NULL;
17
18         while(cur != NULL){
19             //当前节点和下一个节点相同
20             if(cur->next != NULL && cur->val == cur->next->val){
21                 pnext = cur->next;
22                 while(pnext->next != NULL && pnext->next->val == cur->val){
23                     pnext =pnext->next;     //一直找到不相同。
24                 }
25                 //如果指向第一个节点，就删除
27                 else    pre->next = pnext->next;    //否则就指向下一个
28                 cur = pnext->next;    //向前走
29             }
30             else{    //不相同就向前走
31                 pre = cur;
32                 cur = cur->next;
33             }
34         }
35
37     }
38 };

posted @ 2020-03-05 22:50  甜酒果。  阅读(61)  评论(0编辑  收藏