Java編程刪除鏈表中重復的節(jié)點問題解決思路及源碼分享
一. 題目
在一個排序的鏈表中,存在重復的結(jié)點,請刪除該鏈表中重復的結(jié)點,重復的結(jié)點不保留,返回鏈表頭指針。
二. 例子
輸入鏈表:1->2->3->3->4->4->5
處理后為:1->2->5
三. 思路
個人感覺這題關(guān)鍵是注意指針的指向,可以定義一個first對象(值為-1,主要用于返回操作后的鏈表),first.next指向head,定義一個last同樣指向first(主要用于操作記錄要刪除節(jié)點的前一個節(jié)點),定義一個p指向head,指向當前節(jié)點。
操作流程:
①先判斷當前p指向與p.next指向是否為空,為空則進入⑤,不為空進入②;
②判斷當前節(jié)點p的值與與p.next的值是否相等,如果相等,進入③,不相等,進入④
③記錄p.val的值為val,循環(huán)判斷val是否與當前p指向相等,相等的話p = p.next,last.next指向p;
④last指向p,p指向p.next;
⑤返回first.next;
四. 程序源碼
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
ListNode first = new ListNode(-1);
first.next = pHead;
ListNode last = first;
ListNode p = pHead;
while(p!=null&&p.next!=null){
if(p.val==p.next.val){
int val = p.val;
while(p!=null&&p.val==val){
p = p.next;
last.next = p;
}
}else{
last = p;
p = p.next;
}
}
return first.next;
}
}
總結(jié)
以上就是本文關(guān)于Java編程刪除鏈表中重復的節(jié)點問題解決思路及源碼分享的全部內(nèi)容,感興趣的朋友可以參閱:Java編程實現(xiàn)從尾到頭打印鏈表代碼實例、Spring boot jpa 刪除數(shù)據(jù)和事務管理的問題實例詳解、MySQL刪除表數(shù)據(jù)的方法以及本站其他相關(guān)專題,希望對大家有所幫助。如有不足之處,歡迎留言指出!感謝朋友們的閱讀。
上一篇:Java編程基本概念
欄 目:Java編程
本文標題:Java編程刪除鏈表中重復的節(jié)點問題解決思路及源碼分享
本文地址:http://www.jygsgssxh.com/a1/Javabiancheng/8466.html
您可能感興趣的文章


閱讀排行
本欄相關(guān)
- 01-10Java咖啡館(1)——嘆咖啡
- 01-10JVM的垃圾回收機制詳解和調(diào)優(yōu)
- 01-10Java Socket編程(三) 服務器Sockets
- 01-10Java進階:Struts多模塊的技巧
- 01-10J2SE 1.5版本的新特性一覽
- 01-10Java Socket編程(一) Socket傳輸模式
- 01-10Java運行時多態(tài)性的實現(xiàn)
- 01-10Java Socket編程(二) Java面向連接的類
- 01-10Java Socket編程(四) 重復和并發(fā)服務
- 01-10Java經(jīng)驗點滴:處理沒有被捕獲的異常
隨機閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結(jié)
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05DEDE織夢data目錄下的sessions文件夾有什


