亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

分析過程:

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

示例代碼:

package linkedlist;

public class DoubleLinkedListDemo {

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

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

// 創(chuàng)建一個(gè)雙向鏈表的類
// 定義Node,每個(gè)Node對(duì)象就是一個(gè)節(jié)點(diǎn)
class Node {
	public int no;
	public String name;
	public Node next;	// 指向下一個(gè)節(jié)點(diǎn),默認(rèn)為null
	public Node pre;	// 指向前一個(gè)節(jié)點(diǎn),默認(rèn)為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 +"]";
	}
}

運(yùn)行結(jié)果運(yùn)行結(jié)果

總結(jié)

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Springboot詳解底層啟動(dòng)過程

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

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

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

最新評(píng)論