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

Java雙向鏈表按照順序添加節(jié)點的方法實例

 更新時間:2021年02月04日 09:38:29   作者:星星照亮你的禿頂  
這篇文章主要給大家介紹了關于Java雙向鏈表按照順序添加節(jié)點的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

分析過程:

首先需要比較待添加的節(jié)點編號與已有的節(jié)點編號的大小,若待添加的節(jié)點編號已經(jīng)存在,則不能加入。為防止出現(xiàn)空指針的情況,需要對節(jié)點的位置進行判斷。

示例代碼:

package linkedlist;

public class DoubleLinkedListDemo {

	public static void main(String[] args) {
		// 測試
		System.out.println("雙向鏈表的測試");
		// 創(chuàng)建節(jié)點
		Node node1 = new Node(1, "道明寺");
		Node node2 = new Node(2, "花澤類");
		Node node3 = new Node(3, "西門總二郎");
		Node node4 = new Node(4, "美作玲");
		// 創(chuàng)建一個雙向鏈表
		DoubleLinkedList doubleLinkedList = new DoubleLinkedList();
		// 添加節(jié)點
		doubleLinkedList.addByOrder(node1);
		doubleLinkedList.addByOrder(node4);
		doubleLinkedList.addByOrder(node3);
		doubleLinkedList.addByOrder(node2);
		// 顯示排序后的雙向鏈表
		doubleLinkedList.list();
	}
}

// 創(chuàng)建一個雙向鏈表的類
class DoubleLinkedList {
	// 先初始化頭節(jié)點,頭節(jié)點不動
	private Node head = new Node(0, "");
	
	// 返回頭節(jié)點
	public Node getHead() {
		return head;
	}
	
	// 添加節(jié)點時,根據(jù)編號將節(jié)點插入到指定位置
	// 如果有這個編號,則添加失敗,并給出提示
	public void addByOrder(Node node) {
		// 頭節(jié)點不能動,通過一個輔助指針(變量)幫助找到需要添加的位置
		Node temp = head;
		boolean flag = false;	// flag標志添加的編號是否存在,默認為false
		while(true) {
			if(temp.next == null) {
				break;
			}
			if(temp.next.no > node.no) {
				break;
			}
			if(temp.next.no == node.no) {
				flag = true;
				break;
			}
			temp = temp.next;	// 遍歷鏈表
		}
		if(flag) {
			System.out.printf("輸入的編號%d已經(jīng)存在,不能加入\n", node.no);
		}
		else {
			// 為防止出現(xiàn)空指針的情況,需要對temp節(jié)點位置進行判斷
			// 若雙向鏈表尚未到達尾端,則需要將node節(jié)點與其相鄰的后面的節(jié)點進行連接
			if(temp.next != null) {
				node.next = temp.next;
				temp.next.pre = node;
			}
			// 無論雙向鏈表是否到達尾端,都需要將node節(jié)點與其相鄰的前面的節(jié)點進行連接
			temp.next = node;
			node.pre = temp;
		}
	}
	
	// 遍歷雙向鏈表的方法
	// 顯示鏈表【遍歷】
	public void list() {
		// 判斷鏈表是否為空
		if(head.next == null) {
			System.out.println("鏈表為空");
			return;
		}
		// 因為頭節(jié)點不能動,需要一個輔助變量來遍歷
		Node temp = head.next;
		while (true) {
			// 判斷是否到鏈表最后
			if(temp == null)
				break;
			// 輸出節(jié)點的信息
			System.out.println(temp);
			// 將temp后移
			temp = temp.next;
		}
	}
}

// 創(chuàng)建一個雙向鏈表的類
// 定義Node,每個Node對象就是一個節(jié)點
class Node {
	public int no;
	public String name;
	public Node next;	// 指向下一個節(jié)點,默認為null
	public Node pre;	// 指向前一個節(jié)點,默認為null
	// 構(gòu)造器
	public Node(int no, String name) {
		this.no = no;
		this.name = name;
	}
	// 為了顯示方便,重新toString
	@Override
	public String toString() {
		return "Node [no=" + no + ", name=" + name +"]";
	}
}

運行結(jié)果運行結(jié)果

總結(jié)

到此這篇關于Java雙向鏈表按照順序添加節(jié)點的文章就介紹到這了,更多相關Java雙向鏈表按照順序添加節(jié)點內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java web.xml之contextConfigLocation作用案例詳解

    Java web.xml之contextConfigLocation作用案例詳解

    這篇文章主要介紹了Java web.xml之contextConfigLocation作用案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 關于json序列化(javaBean轉(zhuǎn)Json的細節(jié)處理)

    關于json序列化(javaBean轉(zhuǎn)Json的細節(jié)處理)

    這篇文章主要介紹了關于json序列化(javaBean轉(zhuǎn)Json的細節(jié)處理),具有很好的參考價值,希望對大家有所幫助。
    2022-03-03
  • Java 實戰(zhàn)項目之畢業(yè)設計管理系統(tǒng)的實現(xiàn)流程

    Java 實戰(zhàn)項目之畢業(yè)設計管理系統(tǒng)的實現(xiàn)流程

    讀萬卷書不如行萬里路,只學書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)畢業(yè)設計管理系統(tǒng),大家可以在過程中查缺補漏,提升水平
    2021-11-11
  • 使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    graalvm讓native鏡像支持反射的關鍵是利用json提前告訴它哪些類的哪些方法會被反射調(diào)用,然后它就能力在運行時支持反射了,這篇文章主要介紹了如何使用graalvm為帶有反射功能的java代碼生成native?image,需要的朋友可以參考下
    2024-02-02
  • Spring @Component自定義注解實現(xiàn)詳解

    Spring @Component自定義注解實現(xiàn)詳解

    @Component是一個元注解,意思是可以注解其他類注解,如@Controller @Service @Repository @Aspect。官方的原話是:帶此注解的類看為組件,當使用基于注解的配置和類路徑掃描的時候,這些類就會被實例化
    2022-09-09
  • 分析xxljob登入功能集成OIDC的統(tǒng)一認證

    分析xxljob登入功能集成OIDC的統(tǒng)一認證

    這篇文章主要為大家介紹分析xxljob登入功能集成OIDC的統(tǒng)一認證的詳解說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • 基于String變量的兩種創(chuàng)建方式(詳解)

    基于String變量的兩種創(chuàng)建方式(詳解)

    下面小編就為大家?guī)硪黄赟tring變量的兩種創(chuàng)建方式(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • SpringBoot Web開發(fā)之系統(tǒng)任務啟動與路徑映射和框架整合

    SpringBoot Web開發(fā)之系統(tǒng)任務啟動與路徑映射和框架整合

    這篇文章主要介紹了SpringBoot Web開發(fā)中的系統(tǒng)任務啟動與路徑映射和Servlet、Filter、Listener框架整合,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Springboot詳解底層啟動過程

    Springboot詳解底層啟動過程

    這篇文章主要介紹了SpringBoot啟動過程的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • FP-Growth算法的Java實現(xiàn)+具體實現(xiàn)思路+代碼

    FP-Growth算法的Java實現(xiàn)+具體實現(xiàn)思路+代碼

    FP-Growth算法比Apriori算法快很多(但是卻比不上時間,how time slipped away)。在網(wǎng)上搜索后發(fā)現(xiàn)Java實現(xiàn)的FP-Growth算法很少,且大多數(shù)不太能理解):太菜。所以就自己實現(xiàn)了一下。這篇文章重點介紹一下我的Java實現(xiàn)
    2021-06-06

最新評論