zoukankan      html  css  js  c++  java
  • 删除链表中重复的节点

    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

    数据结构及初始化:

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

    代码如下:

    ListNode* deleteDuplication(ListNode* pHead)
        {
            if(pHead==NULL)
                return NULL;
            ListNode *head=new ListNode(-1);//创建一个头结点,防止头结点被删除
            head->next=pHead;//创建的头结点初始化
            ListNode *pre=head;//两个操作指针pre和p
            ListNode *p=head->next;
            while(p&&p->next)
            {
                if(p->val==p->next->val)//如果p指向的值和p->next指向的值相同
                {
                    int val=p->val;//保留当前的值,因为下面p会移动
                    while(p&&p->val==val)
                        p=p->next;
                    pre->next=p;//此时是p指向的值和val不相同,则让pre->next=p;间接删除了重复的节点
                }
                else//出现p指向的值和下一个值不相同,移动pre和p
                {
                    pre=p;
                    p=p->next;
                }
                
            }
            return head->next;//返回链表的头(不带头结点)
        }
  • 相关阅读:
    python3删除mysql上月分区数据(脚本)
    ansible之基本原理及命令
    centOS 7 简单设置(虚拟机)
    TCP_Wrappers 简介
    sudo
    引用数据应该选择 ID, CODE 还是 NAME
    吃得洒脱是一种什么体验
    通用数据同步机制
    我的学PyTorch之路(1)
    38岁才学会了游泳的心得
  • 原文地址:https://www.cnblogs.com/wft1990/p/7451498.html
Copyright © 2011-2022 走看看