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

Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之雙向鏈表

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

雙向鏈表的儲(chǔ)存結(jié)構(gòu)示意圖

雙向鏈表的初始化結(jié)構(gòu)

1.雙向鏈表的結(jié)點(diǎn)

代碼實(shí)現(xiàn)

//雙向鏈表的結(jié)點(diǎn),包含一個(gè)數(shù)據(jù)域,兩個(gè)指針域
typedef struct DoublyNode {
	ElementType date;  //數(shù)據(jù)域
	struct DoublyNode* prev;   //指向前綴結(jié)點(diǎn)
	struct DoublyNode* next;   //指向后綴結(jié)點(diǎn)
}DoublyNode;

2.雙向鏈表的頭結(jié)點(diǎn)

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

3.總代碼

//雙向鏈表的結(jié)點(diǎn),包含一個(gè)數(shù)據(jù)域,兩個(gè)指針域
typedef struct DoublyNode {
	ElementType date;  //數(shù)據(jù)域
	struct DoublyNode* prev;   //指向前綴結(jié)點(diǎn)
	struct DoublyNode* next;   //指向后綴結(jié)點(diǎn)
}DoublyNode;
 
//雙向鏈表
typedef struct DoublyLinkList {
	int length;
	DoublyNode* next;
};

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

1.插入的為第一個(gè)位置

代碼實(shí)現(xiàn)

2.其他位置插入

代碼實(shí)現(xiàn)

總代碼

void InsertDoublyLinkList(DoublyLinkList* dlist, int pos, ElementType element) {
	//創(chuàng)建空節(jié)點(diǎn)
	DoublyNode* node = (DoublyLinkList*)malloc(sizeof(DoublyLinkList));
	node->date = element;
	node->prev = NULL;
	node->next = NULL;
	//在第一個(gè)位置插入結(jié)點(diǎn)
	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) {
			//如果前置結(jié)點(diǎn)非空->因?yàn)榭站捅硎緵]有后繼結(jié)點(diǎn)了
			//將插入位置的前置結(jié)點(diǎn)改為指向新結(jié)點(diǎn)
			currNode->next->prev = node;
		}
		node->next = currNode->next;
		currNode->next = node;
		dlist->length++;
	}
}

雙向鏈表的刪除

1.刪除第一個(gè)元素

代碼實(shí)現(xiàn)

2.刪除其他位置元素

代碼實(shí)現(xiàn)

總代碼

void DeleteDoublyLinkList(DoublyLinkList* dlist, int pos) {
	if (pos == 1) {
		DoublyLinkList* node = dlist->next;
		if (node) {
			dlist->next;
			if (node->next) {
				//如果喲有第二個(gè)結(jié)點(diǎn),那么設(shè)置第二個(gè)結(jié)點(diǎn)的前置結(jié)點(diǎn)為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;
}
 

到此這篇關(guān)于Java數(shù)據(jù)結(jié)構(gòu)與算法學(xué)習(xí)之雙向鏈表的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)結(jié)構(gòu) 雙向鏈表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Map按單個(gè)或多個(gè)Value排序當(dāng)Value相同時(shí)按Key排序

    Map按單個(gè)或多個(gè)Value排序當(dāng)Value相同時(shí)按Key排序

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

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

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

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

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

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

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

    java.text.DecimalFormat用法詳解

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

    Java調(diào)用構(gòu)造函數(shù)和方法及使用詳解

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

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

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

    Java計(jì)算兩個(gè)漢字相似度的實(shí)現(xiàn)方法

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

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

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

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

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

最新評(píng)論

车险| 云阳县| 浪卡子县| 金山区| 静乐县| 平远县| 乡城县| 和林格尔县| 滦平县| 贡嘎县| 饶平县| 奉新县| 涿鹿县| 恩施市| 库伦旗| 周宁县| 揭阳市| 普定县| 根河市| 瓦房店市| 兴宁市| 报价| 萍乡市| 大田县| 成都市| 武冈市| 隆尧县| 沿河| 徐汇区| 浦县| 平乡县| 志丹县| 清丰县| 延川县| 临颍县| 丹阳市| 米泉市| 泽州县| 海晏县| 神池县| 富源县|