最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java代碼實現(xiàn)雙向鏈表

 更新時間:2022年05月26日 14:24:51   作者:Undefined°  
這篇文章主要為大家詳細(xì)介紹了java代碼實現(xiàn)雙向鏈表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了雙向鏈表java實現(xiàn)代碼,供大家參考,具體內(nèi)容如下

一、雙向鏈表簡介

1、單鏈表的缺陷

單鏈表只能從頭結(jié)點開始訪問鏈表中的數(shù)據(jù)元素,如果需要逆序訪問單鏈表中的數(shù)據(jù)元素將極其低效。

2、雙向鏈表的結(jié)構(gòu)

雙鏈表是鏈表的一種,由節(jié)點組成,每個數(shù)據(jù)結(jié)點中都有兩個指針,分別指向直接后繼和直接前驅(qū)。

3、雙向鏈表類的基本結(jié)構(gòu)

class HeroNode2 {
? ? ? ? //編號
? ? ? ? public int no;
? ? ? ? //名稱
? ? ? ? public String name;
? ? ? ? //昵稱
? ? ? ? public String nickName;
? ? ? ? //下個節(jié)點編碼
? ? ? ? public HeroNode2 next;
? ? ? ? //上一個節(jié)點
? ? ? ? public HeroNode2 pre;
?
? ? ? ? public HeroNode2(int no, String name, String nickName) {
? ? ? ? ? ? this.no = no;
? ? ? ? ? ? this.name = name;
? ? ? ? ? ? this.nickName = nickName;
? ? ? ? }
?
? ? ? ? public HeroNode2(int no, String name) {
? ? ? ? ? ? this.no = no;
? ? ? ? ? ? this.name = name;
? ? ? ? }
?
? ? ? ? @Override
? ? ? ? public String toString() {
? ? ? ? ? ? return "HeroNode{" +
? ? ? ? ? ? ? ? ? ? "no=" + no +
? ? ? ? ? ? ? ? ? ? ", name='" + name + '\'' +
? ? ? ? ? ? ? ? ? ? ", nickName='" + nickName + '\'' +
? ? ? ? ? ? ? ? ? ? '}';
? ? ? ? }
? ? }

二、雙向鏈表的操作

1、雙向鏈表的插入操作

//添加節(jié)點到單向鏈表
? ? ? ? //1. 找到當(dāng)前鏈表的最后節(jié)點
? ? ? ? //2. 將最后這個節(jié)點的next指定新節(jié)點
? ? ? ? public void add(HeroNode2 heroNode) {
? ? ? ? ? ? //因為head節(jié)點不能動,所以需要一個輔助變量temp
? ? ? ? ? ? HeroNode2 temp = head;
? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? //根據(jù)是否有下個節(jié)點判斷 是否到了鏈表動最后
? ? ? ? ? ? ? ? if (temp.next == null) {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //如果沒有找到最后 temp后移
? ? ? ? ? ? ? ? temp = temp.next;
? ? ? ? ? ? }
? ? ? ? ? ? //當(dāng)退出循環(huán)時,temp就指向了鏈表的最后位置
? ? ? ? ? ? //當(dāng)最后這個節(jié)點的next 指向新的節(jié)點
? ? ? ? ? ? //新節(jié)點的上一個節(jié)點指向temp
? ? ? ? ? ? temp.next = heroNode;
? ? ? ? ? ? heroNode.pre = temp;
? ? ? ? }

 2、雙向鏈表的刪除操作

?/**
? ? ? ? ?* 根據(jù)編號刪除節(jié)點
? ? ? ? ?* 雙向鏈表找到對應(yīng)的節(jié)點直接刪除
? ? ? ? ?* @param no 節(jié)點編號
? ? ? ? ?*/
? ? ? ? public void deleteByNo(int no) {
? ? ? ? ? ? //判斷是否鏈表為空
? ? ? ? ? ? if (head.next == null) {
? ? ? ? ? ? ? ? System.out.println("鏈表為空");
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? ? ? HeroNode2 temp = head;
? ? ? ? ? ? //設(shè)置標(biāo)識
? ? ? ? ? ? boolean flag = false;
? ? ? ? ? ? while (true) {
? ? ? ? ? ? ? ? //已經(jīng)遍歷到鏈表尾
? ? ? ? ? ? ? ? if (temp == null) {
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //找到修改節(jié)點的上一個節(jié)點
? ? ? ? ? ? ? ? if (temp.no == no) {
? ? ? ? ? ? ? ? ? ? flag = true;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? temp = temp.next;
? ? ? ? ? ? }
?
? ? ? ? ? ? //找到對應(yīng)的節(jié)點
? ? ? ? ? ? if (flag) {
? ? ? ? ? ? ? ? //找到要刪除節(jié)點的上一個節(jié)點 將刪除節(jié)點的下一個節(jié)點 綁定為中間變量的下一個節(jié)點
? ? ? ? ? ? ? ? temp.pre.next=temp.next;
? ? ? ? ? ? ? ? if (temp.next!=null){
? ? ? ? ? ? ? ? ? ? temp.next.pre=temp.pre;
? ? ? ? ? ? ? ? }
?
?
? ? ? ? ? ? } else {
? ? ? ? ? ? ? ? System.out.println("沒有對應(yīng)的節(jié)點無法刪除");
? ? ? ? ? ? }
? ? ? ? }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 2024最新版JDK安裝保姆級教程

    2024最新版JDK安裝保姆級教程

    這篇文章主要介紹了2024最新版JDK安裝保姆級教程,JDK是Java開發(fā)的核心工具包,包含編譯器、運行時環(huán)境和標(biāo)準(zhǔn)庫等,安裝JDK首先要從官網(wǎng)下載合適版本,如JDK17,然后進行安裝,安裝完成后需配置環(huán)境變量JAVA_HOME和Path,確保系統(tǒng)可以正確找到Java命令,需要的朋友可以參考下
    2024-09-09
  • 基于MapReduce實現(xiàn)決策樹算法

    基于MapReduce實現(xiàn)決策樹算法

    這篇文章主要為大家詳細(xì)介紹了基于MapReduce實現(xiàn)決策樹算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信方式

    JavaWeb-WebSocket瀏覽器服務(wù)器雙向通信方式

    文章介紹了WebSocket協(xié)議的工作原理和應(yīng)用場景,包括與HTTP的對比,接著,詳細(xì)介紹了如何在Java中使用WebSocket,包括配置類、服務(wù)編寫和前端頁面的實現(xiàn)
    2025-02-02
  • 一文搞懂Java項目中枚舉的定義與使用

    一文搞懂Java項目中枚舉的定義與使用

    枚舉就是用enum修飾是一種Java特殊的類,枚舉是class、底層是繼承了java.lang.Enum類的實體類。本文將詳解枚舉的定義與使用,需要的可以參考一下
    2022-06-06
  • Java StringUtils字符串分割轉(zhuǎn)數(shù)組的實現(xiàn)

    Java StringUtils字符串分割轉(zhuǎn)數(shù)組的實現(xiàn)

    這篇文章主要介紹了Java StringUtils字符串分割轉(zhuǎn)數(shù)組的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • 歸并排序時間復(fù)雜度過程推導(dǎo)詳解

    歸并排序時間復(fù)雜度過程推導(dǎo)詳解

    這篇文章主要介紹了C語言實現(xiàn)排序算法之歸并排序,對歸并排序的原理及實現(xiàn)過程做了非常詳細(xì)的解讀,需要的朋友可以參考下,希望能幫助到你
    2021-08-08
  • springboot加載配值文件的實現(xiàn)步驟

    springboot加載配值文件的實現(xiàn)步驟

    本文主要介紹了springboot加載配值文件的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • 解決Spring或SpringBoot開啟事務(wù)以后無法返回自增主鍵的問題

    解決Spring或SpringBoot開啟事務(wù)以后無法返回自增主鍵的問題

    這篇文章主要介紹了解決Spring或SpringBoot開啟事務(wù)以后無法返回自增主鍵的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java基礎(chǔ)知識之StringReader流的使用

    Java基礎(chǔ)知識之StringReader流的使用

    這篇文章主要介紹了Java基礎(chǔ)知識之StringReader流的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中讀取文件轉(zhuǎn)換為字符串的方法

    Java中讀取文件轉(zhuǎn)換為字符串的方法

    今天小編就為大家分享一篇Java中讀取文件轉(zhuǎn)換為字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07

最新評論

太康县| 上犹县| 宾川县| 临桂县| 孝昌县| 新巴尔虎左旗| 茌平县| 噶尔县| 瑞丽市| 邳州市| 体育| 临桂县| 仙游县| 通化县| 嘉义县| 永福县| 芒康县| 榆社县| 海伦市| 津市市| 自贡市| 乌拉特后旗| 刚察县| 城市| 太康县| 咸丰县| 南召县| 鹤庆县| 民县| 阳新县| 锡林郭勒盟| 武平县| 韩城市| 九江市| 桐城市| 陕西省| 沁源县| 浮梁县| 筠连县| 邮箱| 聂拉木县|