在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
(1)链表为空,不必多说,return null
;
(2)如果恰恰是头结点与头结点的后一个重复了,这种情况是可以发生的,那头结点就要被删除,另选新的结点作为头结点。如何处理这种特殊情况,多申请一个指针就可以了。
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 条评论) |