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

Java數據結構與算法學習之雙向鏈表

 更新時間:2021年12月28日 09:56:26   作者:玄澈_  
雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個數據結點中都有兩個指針,分別指向直接后繼和直接前驅。所以,從雙向鏈表中的任意一個結點開始,都可以很方便地訪問它的前驅結點和后繼結點。本文將為大家詳細介紹雙向鏈表的特點與使用,需要的可以參考一下

雙向鏈表的儲存結構示意圖

雙向鏈表的初始化結構

1.雙向鏈表的結點

代碼實現(xiàn)

//雙向鏈表的結點,包含一個數據域,兩個指針域
typedef struct DoublyNode {
	ElementType date;  //數據域
	struct DoublyNode* prev;   //指向前綴結點
	struct DoublyNode* next;   //指向后綴結點
}DoublyNode;

2.雙向鏈表的頭結點

//雙向鏈表
typedef struct DoublyLinkList {
	int length;
	DoublyNode* next;
};

3.總代碼

//雙向鏈表的結點,包含一個數據域,兩個指針域
typedef struct DoublyNode {
	ElementType date;  //數據域
	struct DoublyNode* prev;   //指向前綴結點
	struct DoublyNode* next;   //指向后綴結點
}DoublyNode;
 
//雙向鏈表
typedef struct DoublyLinkList {
	int length;
	DoublyNode* next;
};

雙向鏈表中的指定文件插入元素?

1.插入的為第一個位置

代碼實現(xiàn)

2.其他位置插入

代碼實現(xiàn)

總代碼

void InsertDoublyLinkList(DoublyLinkList* dlist, int pos, ElementType element) {
	//創(chuàng)建空節(jié)點
	DoublyNode* node = (DoublyLinkList*)malloc(sizeof(DoublyLinkList));
	node->date = element;
	node->prev = NULL;
	node->next = NULL;
	//在第一個位置插入結點
	if (pos == 1) {
		node->next = dlist->next;
		dlist->next = node;
		node->next->prev = node;
		dlist->length++;
		return;
	}
	DoublyLinkList* currNode = dlist->next;
	for (int i = 1; currNode && i < pos - 1; i++) {
		currNode = currNode->next;
	}
	if (currNode) {
		node->prev = currNode;
		if (currNode->next) {
			//如果前置結點非空->因為空就表示沒有后繼結點了
			//將插入位置的前置結點改為指向新結點
			currNode->next->prev = node;
		}
		node->next = currNode->next;
		currNode->next = node;
		dlist->length++;
	}
}

雙向鏈表的刪除

1.刪除第一個元素

代碼實現(xiàn)

2.刪除其他位置元素

代碼實現(xiàn)

總代碼

void DeleteDoublyLinkList(DoublyLinkList* dlist, int pos) {
	if (pos == 1) {
		DoublyLinkList* node = dlist->next;
		if (node) {
			dlist->next;
			if (node->next) {
				//如果喲有第二個結點,那么設置第二個結點的前置結點為NULL
				node->next->prev = NULL;
			}
			free(node);
			dlist->length--;
		}
		return;
	}
 
	DoublyLinkList* node = dlist->next;
	for (int i = 1; i < pos; i++) {
		node = node->next;
	}
	if (node) {
		if (node->next) {
			node->next->prev = node->prve;
		}
		node->prev->next = node->next;
		free(node);
		dlist->length--;
	}
	return;
}
 

到此這篇關于Java數據結構與算法學習之雙向鏈表的文章就介紹到這了,更多相關Java數據結構 雙向鏈表內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Map按單個或多個Value排序當Value相同時按Key排序

    Map按單個或多個Value排序當Value相同時按Key排序

    Map可以先按照value進行排序,然后按照key進行排序。 或者先按照key進行排序,然后按照value進行排序,這樣操作都行,這篇文章主要介紹了Map按單個或多個Value排序,當Value相同時按Key排序,需要的朋友可以參考下
    2023-02-02
  • java定時任務cron表達式每周執(zhí)行一次的坑及解決

    java定時任務cron表達式每周執(zhí)行一次的坑及解決

    這篇文章主要介紹了java定時任務cron表達式每周執(zhí)行一次的坑及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java中IO和NIO的區(qū)別詳細解析

    Java中IO和NIO的區(qū)別詳細解析

    這篇文章主要介紹了Java中IO和NIO的區(qū)別詳細解析,IO和NIO有相同的作用和目的,但實現(xiàn)方式不同,NIO主要用到的是塊,所以NIO的效率要比IO快不少,需要的朋友可以參考下
    2023-11-11
  • RSA加密的方式和解密方式實現(xiàn)方法(推薦)

    RSA加密的方式和解密方式實現(xiàn)方法(推薦)

    下面小編就為大家?guī)硪黄猂SA加密的方式和解密方式實現(xiàn)方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • java.text.DecimalFormat用法詳解

    java.text.DecimalFormat用法詳解

    這篇文章主要為大家詳細介紹了java.text.DecimalFormat用法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Java調用構造函數和方法及使用詳解

    Java調用構造函數和方法及使用詳解

    在Java編程中,構造函數用于初始化新創(chuàng)建的對象,而方法則用于執(zhí)行對象的行為,構造函數在使用new關鍵字創(chuàng)建類實例時自動調用,沒有返回類型,并且名稱與類名相同,本文通過示例詳細介紹了如何在Java中使用構造函數和方法,感興趣的朋友一起看看吧
    2024-10-10
  • 詳談jpa中表的@OneToMany等關聯(lián)關系

    詳談jpa中表的@OneToMany等關聯(lián)關系

    這篇文章主要介紹了詳談jpa中表的@OneToMany等關聯(lián)關系,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java計算兩個漢字相似度的實現(xiàn)方法

    Java計算兩個漢字相似度的實現(xiàn)方法

    有時候我們希望計算兩個漢字的相似度,比如文本的 OCR 等場景,用于識別糾正,本文給大家詳細介紹了Java計算兩個漢字相似度的實現(xiàn)方法,文中有詳細的實現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • Windows下Java環(huán)境變量配置詳解

    Windows下Java環(huán)境變量配置詳解

    這篇文中給大家介紹的是關于Windows下JAVA環(huán)境變量JAVA_HOME、CLASSPATH、PATH設置的相關資料,文中介紹的還是相對比較詳細的,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Java 異常的棧軌跡(Stack Trace)詳解及實例代碼

    Java 異常的棧軌跡(Stack Trace)詳解及實例代碼

    這篇文章主要介紹了Java 異常的棧軌跡(Stack Trace)詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-03-03

最新評論

茶陵县| 龙山县| 屏山县| 扬中市| 嘉祥县| 镶黄旗| 阳原县| 兴海县| 吴桥县| 镇坪县| 通渭县| 海口市| 兰西县| 台中市| 麻栗坡县| 九龙县| 客服| 安塞县| 九江市| 洮南市| 桐梓县| 青岛市| 讷河市| 方城县| 雅江县| 阿巴嘎旗| 夏邑县| 陇南市| 阳曲县| 罗源县| 龙门县| 宁明县| 平利县| 台湾省| 庆阳市| 伽师县| 米泉市| 青海省| 雅安市| 蕲春县| 重庆市|