zoukankan      html  css  js  c++  java
  • 56、剑指offer--删除链表中重复的结点

    题目描述
    在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
     
    解题思路:从头遍历整个链表,如果当前结点和下一结点值相同,则应当删除。为了保证结点不断,需要保存pre结点,然后找到不相等的next,pre->next = next;注意删除的是头结点的情况,单独处理。
     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:
    12     ListNode* deleteDuplication(ListNode* pHead)
    13     {
    14         if(pHead == NULL)
    15             return NULL;
    16         ListNode *pPreNode = NULL;
    17         ListNode *pNode = pHead;
    18         while(pNode != NULL)
    19         {
    20             ListNode *pNext = pNode->next;
    21             bool needDelete = false;
    22             if(pNext != NULL && pNext->val == pNode->val)
    23                 needDelete = true;
    24             if(!needDelete)//不等
    25             {
    26                 pPreNode = pNode;
    27                 pNode = pNode->next;
    28             }
    29             else//相等该删除
    30             {
    31                 int value = pNode->val;
    32                 ListNode *pToBeDel = pNode;
    33                 while(pToBeDel != NULL && pToBeDel->val == value)
    34                 {
    35                     pNext = pToBeDel->next;
    36                     delete pToBeDel;
    37                     pToBeDel = NULL;
    38                     pToBeDel = pNext;
    39                 }
    40                 if(pPreNode == NULL)//头结点被删除了
    41                     pHead = pNext;
    42                 else
    43                     pPreNode->next = pNext;
    44                 pNode = pNext;
    45  
    46             }
    47         }
    48         return pHead;
    49     }
    50 };
  • 相关阅读:
    T-SQL练习题
    sql server 用脚本管理作业
    sql server维护计划配置
    sql server 里的文件和文件组使用
    mysql 大表优化
    top与with ties用法
    收缩日志文件与数据文件
    监控数据库表的磁盘使用情况
    查看数据字典
    SQL Server中灾难时备份结尾日志(Tail of log)的两种方法
  • 原文地址:https://www.cnblogs.com/qqky/p/7113021.html
Copyright © 2011-2022 走看看