首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指offer——删除链表中重复的结点

剑指offer——删除链表中重复的结点

作者头像
AI那点小事
发布2020-04-20 12:39:17
2570
发布2020-04-20 12:39:17
举报
文章被收录于专栏:AI那点小事AI那点小事

概述


C++ AC代码

#include <iostream>
using namespace std; 

struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};

class Solution {
    public:
        ListNode* deleteDuplication(ListNode* pHead){
            //链表为空返回NULL 
            if(pHead == NULL){
                return NULL;
            }
            //链表只有一个元素,返回头指针 
            if(pHead->next == NULL){
                return pHead;
            }
            // 创建临时结点并作为头结点 
            ListNode* list = new ListNode(0);
            list->next = pHead;  
            ListNode* head = list;
            ListNode* rear;
            ListNode* front;
            while(1){
                // front作为首结点 
                ListNode* front = head->next;
                // 首节点遍历到末尾后借宿循环 
                if(front == NULL){
                    break;
                }
                // rear作为寻找相同结点的指针 
                ListNode* rear = front->next;
                //rear与front的元素一样时,从rear开始检验后面是否还有相同的元素 
                if(rear && front->val == rear->val){
                    int same = rear->val;
                    //由于相同元素全部删除,因此找到与front不一样的元素的结点,保存在rear(可能为空) 
                    while(rear && rear->val == same){
                        rear = rear->next;
                    }
                    /*head作为front的前继 ,head的next指向第一个与front不同元素的结点rear,
                      之后进入下一次循环,不将head向前移
                    */ 
                    head->next = rear;
                    continue;
                }else{//front与rear的元素不一致,那么head后移一位 
                    head = head->next;  
                }
            }
            return list->next;  
        }
};
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • C++ AC代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档