首页 > 作文

剑指offer56:删除链表中重复的结点,排序的链表中,删除重复的结点不保留,返回链表头指针。 例如,链表1

更新时间:2023-04-07 13:19:46 阅读: 评论:0

1 题目描述

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

2 思路和方法

  (1)链表为空,不必多说return null

  (2)如果恰恰是头结点与头结点的后一个重复了,这种情况是可以发生的,那头结点就要被删除,另选新的结点作为头结点。如何处理这种特殊情况,多申请一个指针就可以了。

3 c++核心代码

 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(null == p关于哭的成语head) return null; 15         listnode* pre = null, *cur = phead;16         while(null != cur){17        3月8日女神节祝福语     if(null != cur->next && cur->val == cur->next->val){    //凡是涉及解引用,就要判空,这是职业素养!!!18                 int repeat = cur->val;19                 listnode* pnext;20                 while(null != cur && cur->val == repeat){    //通过循环删除所有值为repeat的打屁股日记结点21                     pnext = cur->next;22                     delete cur;23                     cur = pnext;24                 }25             }el{26                 pre = cur;    //pre指向不重复的结点27                 cur = cur->next;28             }29             30             if(null == pre){31                 phead = cur;32             }el{33                 pre->next = cur;34             }35         }36         return phead;37     }38 };

参考资料

https://blog.csdn.net/qq_41822235/article/details/82832898

本文发布于:2023-04-07 13:19:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/0ea77f82773c7caa5f9c2762c1ec5309.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:剑指offer56:删除链表中重复的结点,排序的链表中,删除重复的结点不保留,返回链表头指针。 例如,链表1.doc

本文 PDF 下载地址:剑指offer56:删除链表中重复的结点,排序的链表中,删除重复的结点不保留,返回链表头指针。 例如,链表1.pdf

标签:结点   链表   指针   这是
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图