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

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

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

分析過(guò)程:

首先需要比較待添加的節(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),通過(guò)一個(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;
			}
			// 無(wú)論雙向鏈表是否到達(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è)輔助變量來(lái)遍歷
		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)文章

  • Spring如何按業(yè)務(wù)模塊輸出日志到不同的文件詳解

    Spring如何按業(yè)務(wù)模塊輸出日志到不同的文件詳解

    最近做項(xiàng)目時(shí)有一個(gè)記錄操作日志的需求,比如某個(gè)用戶進(jìn)行了查詢、刪除、修改等操作,下面這篇文章主要給大家介紹了關(guān)于Spring如何按業(yè)務(wù)模塊輸出日志到不同文件的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案(步驟詳解)

    springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案(步驟詳解)

    這篇文章主要介紹了springboot+maven多環(huán)境動(dòng)態(tài)配置及編譯失敗的解決方案,本文通過(guò)實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-11-11
  • Java的Struts框架中<results>標(biāo)簽的使用方法

    Java的Struts框架中<results>標(biāo)簽的使用方法

    這篇文章主要介紹了Java的Struts框架中<results>標(biāo)簽的使用方法,Struts框架是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下
    2015-11-11
  • springboot的@Value中#和$區(qū)別詳解

    springboot的@Value中#和$區(qū)別詳解

    這篇文章主要介紹了springboot的@Value中#和$區(qū)別詳解,@Value注解的作用主要可以給屬性直接賦值、也可以讀取配置文件中的值給屬性賦值,需要的朋友可以參考下
    2023-11-11
  • 短網(wǎng)址的原理與生成方法(Java實(shí)現(xiàn))

    短網(wǎng)址的原理與生成方法(Java實(shí)現(xiàn))

    這篇文章主要給大家介紹了關(guān)于短網(wǎng)址的原理與生成方法,利用的是Java實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • spring.factories文件的解析源碼API機(jī)制詳解

    spring.factories文件的解析源碼API機(jī)制詳解

    通過(guò)本文深入探討Spring?Boot的背景歷史、業(yè)務(wù)場(chǎng)景、功能點(diǎn)以及底層原理,使讀者對(duì)Spring?Boot有了更深入的了解,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Java8函數(shù)式接口java.util.function速查大全

    Java8函數(shù)式接口java.util.function速查大全

    因?yàn)镴ava8引入了函數(shù)式接口,在java.util.function包含了幾大類函數(shù)式接口聲明,這篇文章主要給大家介紹了關(guān)于Java8函數(shù)式接口java.util.function速查的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析

    Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析

    這篇文章主要為大家介紹了Netty分布式FastThreadLocal的set方法實(shí)現(xiàn)邏輯剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java集合中的WeakHashMap、IdentityHashMap、EnumMap詳解

    Java集合中的WeakHashMap、IdentityHashMap、EnumMap詳解

    這篇文章主要介紹了Java集合中的WeakHashMap、IdentityHashMap、EnumMap詳解,HashMap的key保留了對(duì)實(shí)際對(duì)象的強(qiáng)引用,這意味著只要HashMap對(duì)象不被銷毀,還HashMap的所有key所引用的對(duì)象就不會(huì)被垃圾回收,需要的朋友可以參考下
    2023-09-09
  • 5個(gè)Java API使用技巧

    5個(gè)Java API使用技巧

    這篇文章主要為大家詳細(xì)介紹了Java API安全和性能方面的簡(jiǎn)單易用技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評(píng)論

泊头市| 文成县| 化州市| 开平市| 饶河县| 翁源县| 聂荣县| 鸡西市| 嘉善县| 平阳县| 武宁县| 贵港市| 永胜县| 横山县| 塔城市| 萨嘎县| 拉孜县| 昭平县| 景德镇市| 东丽区| 出国| 邮箱| 岳池县| 驻马店市| 庆云县| 高唐县| 浦东新区| 大庆市| 密云县| 颍上县| 河津市| 乡城县| 建阳市| 洛宁县| 平遥县| 安丘市| 阿拉尔市| 阳新县| 开阳县| 陕西省| 石台县|