欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

本文實例為大家分享了雙向鏈表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. 找到當前鏈表的最后節(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;
? ? ? ? ? ? }
? ? ? ? ? ? //當退出循環(huán)時,temp就指向了鏈表的最后位置
? ? ? ? ? ? //當最后這個節(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è)置標識
? ? ? ? ? ? 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)文章

  • SpringBoot validator參數(shù)驗證restful自定義錯誤碼響應(yīng)方式

    SpringBoot validator參數(shù)驗證restful自定義錯誤碼響應(yīng)方式

    這篇文章主要介紹了SpringBoot validator參數(shù)驗證restful自定義錯誤碼響應(yīng)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析

    java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析

    這篇文章主要介紹了java網(wǎng)絡(luò)之基于UDP的聊天程序示例解析,文中通過步驟及示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Spring通過<import>標簽導(dǎo)入外部配置文件

    Spring通過<import>標簽導(dǎo)入外部配置文件

    之前文章里我們講到Spring加載Xml配置文件的細節(jié),那么加載完了我們肯定要解析這個配置文件中定義的元素。這篇我們首先來分析下Spring是如何通過標簽導(dǎo)入外部配置文件的。
    2021-06-06
  • Spring深入分析講解BeanUtils的實現(xiàn)

    Spring深入分析講解BeanUtils的實現(xiàn)

    java知識體系統(tǒng)有很多數(shù)據(jù)實體,比較常用的DTO、BO、DO、VO等,其他類似POJO概念太老了現(xiàn)在基本廢棄掉了,本篇幅直接忽略,對于這幾種數(shù)據(jù)實體各自代表的含義和應(yīng)用場景先做一下簡單描述和分析
    2022-06-06
  • Java實現(xiàn)RSA算法的方法詳解

    Java實現(xiàn)RSA算法的方法詳解

    這篇文章主要介紹了Java實現(xiàn)RSA算法的方法,結(jié)合實例形式分析了RSA算法的原理、實現(xiàn)與使用方法,需要的朋友可以參考下
    2018-03-03
  • 深入理解JavaWeb中過濾器與監(jiān)聽器的應(yīng)用

    深入理解JavaWeb中過濾器與監(jiān)聽器的應(yīng)用

    這篇文章主要介紹了JavaWeb中過濾器與監(jiān)聽器的應(yīng)用,過濾器能夠?qū)ζヅ涞恼埱蟮竭_目標之前或返回響應(yīng)之后增加一些處理代碼,監(jiān)聽器是一個接口內(nèi)容由我們實現(xiàn),會在特定時間被調(diào)用,感興趣想要詳細了解可以參考下文
    2023-05-05
  • Java實現(xiàn)批量向mysql寫入數(shù)據(jù)的方法

    Java實現(xiàn)批量向mysql寫入數(shù)據(jù)的方法

    這篇文章主要介紹了Java實現(xiàn)批量向mysql寫入數(shù)據(jù)的方法,涉及java基于JDBC連接mysql數(shù)據(jù)庫及寫入數(shù)據(jù)的相關(guān)操作技巧,非常簡單實用,需要的朋友可以參考下
    2017-12-12
  • SpringBoot自動配置原理及案例源碼解析

    SpringBoot自動配置原理及案例源碼解析

    這篇文章主要為大家介紹了SpringBoot自動配置原理及自動配置案例源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java?Chassis3應(yīng)用視角的配置管理技術(shù)解密

    Java?Chassis3應(yīng)用視角的配置管理技術(shù)解密

    這篇文章主要為大家介紹了Java?Chassis3應(yīng)用視角的配置管理相關(guān)的機制和背后故事,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • ELK搭建線上日志收集系統(tǒng)

    ELK搭建線上日志收集系統(tǒng)

    ELK日志收集系統(tǒng)進階使用,本文主要講解如何打造一個線上環(huán)境真實可用的日志收集系統(tǒng),有了它,你就可以和去服務(wù)器上撈日志說再見了
    2022-07-07

最新評論