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

C++帶頭雙向循環(huán)鏈表超詳細(xì)解析

 更新時(shí)間:2022年03月24日 10:14:46   作者:程序猿教你打籃球  
帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用在單獨(dú)存儲(chǔ)數(shù)據(jù)。實(shí)際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都是帶頭雙向循環(huán)鏈表。另外這個(gè)結(jié)構(gòu)雖然結(jié)構(gòu)復(fù)雜,但是使用代碼實(shí)現(xiàn)以后會(huì)發(fā)現(xiàn)結(jié)構(gòu)會(huì)帶來(lái)很多優(yōu)勢(shì),實(shí)現(xiàn)反而簡(jiǎn)單

上期我們講完了無(wú)頭單向非循環(huán)鏈表,這期我們接著來(lái)講鏈表中結(jié)構(gòu)最復(fù)雜的帶頭雙向循環(huán)鏈表!

本期主要內(nèi)容:

?? 什么是帶頭雙向循環(huán)鏈表?

?? 帶頭雙向循環(huán)鏈表常用接口實(shí)現(xiàn)!

?? 順序表和鏈表的區(qū)別和聯(lián)系!

什么是帶頭雙向循環(huán)鏈表

什么是帶頭?雙向?循環(huán)?(帶頭雙向循環(huán)鏈表)

帶頭:代表鏈表存在一個(gè)哨兵位節(jié)點(diǎn),也就是頭節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)不存放任何的有效數(shù)據(jù)!

雙向:每個(gè)節(jié)點(diǎn)都有兩個(gè)指針,分別指向它的前一個(gè)節(jié)點(diǎn)和后一個(gè)節(jié)點(diǎn)!

循環(huán):最后一個(gè)節(jié)點(diǎn)next不再指向NULL指向的是哨兵位節(jié)點(diǎn),哨兵位節(jié)點(diǎn)prev指向的是最后一個(gè)節(jié)點(diǎn)!(如果是單項(xiàng)鏈表的話哨兵位不指向最后一個(gè)節(jié)點(diǎn)!)

帶頭雙向循環(huán)鏈表:結(jié)構(gòu)最復(fù)雜,一般用在單獨(dú)存儲(chǔ)數(shù)據(jù)。實(shí)際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都是帶頭雙向循環(huán)鏈表。另外這個(gè)結(jié)構(gòu)雖然結(jié)構(gòu)復(fù)雜,但是使用代碼實(shí)現(xiàn)以后會(huì)發(fā)現(xiàn)結(jié)構(gòu)會(huì)帶來(lái)很多優(yōu)勢(shì),實(shí)現(xiàn)反而簡(jiǎn)單了,后面我們代碼實(shí)現(xiàn)了就知道了!

帶頭雙向循環(huán)鏈表常用接口實(shí)現(xiàn)

?? 搭建帶頭雙向循環(huán)鏈表的結(jié)構(gòu)!

 ?? 帶頭雙向循環(huán)鏈表的初始化并創(chuàng)建新節(jié)點(diǎn)!

 ?? 頭部插入節(jié)點(diǎn)!

 ?? 尾部插入節(jié)點(diǎn)!

 ?? 頭部刪除節(jié)點(diǎn)!

 ?? 尾部刪除節(jié)點(diǎn)!

 ?? 在pos節(jié)點(diǎn)前插入節(jié)點(diǎn)!

我們首先要找到pos節(jié)點(diǎn)的地址! 

ListNode* ListFind(ListNode* phead, LTDataType x)
{
	assert(phead);
	ListNode* cur = phead->next;
	while (cur != phead)
	{
		if (cur->data == x)
		{
			return cur;
		}
		cur = cur->next;
	}
	return NULL;
}

 ?? 刪除指定pos節(jié)點(diǎn)!

 看了上面的那么多的圖解,相信刪除指定節(jié)點(diǎn)對(duì)你來(lái)說(shuō)也很簡(jiǎn)單吧!我就直接上代碼了!

void ListErase(ListNode* pos)
{
	assert(pos);
	ListNode* prev = pos->prev;
	ListNode* next = pos->next;
	prev->next = next;
	next->prev = prev;
	
	free(pos);
	pos = NULL;
}

?? 最后別忘記銷毀鏈表哦!

void ListDestory(ListNode* phead)
{
	ListNode* cur = phead->next;
	while (cur != phead)
	{
		ListNode* next = cur->next;
		free(cur);
		cur = next;
	}
	free(phead);
	phead = NULL;
}

其實(shí)很多小伙伴一看到數(shù)據(jù)結(jié)構(gòu)就頭疼,但是我想說(shuō),不要嫌畫圖麻煩,一定要多畫圖,這樣更有利于我們實(shí)現(xiàn)代碼,靠腦袋空想是想不出來(lái)的!

最后愛打籃球的程序猿想送小伙伴們一句話:天再高又怎樣,踮起腳尖就更接近陽(yáng)光!

gitee(碼云):Mercury. (zzwlwp) - Gitee.com

到此這篇關(guān)于C++帶頭雙向循環(huán)鏈表超詳細(xì)解析的文章就介紹到這了,更多相關(guān)C++ 帶頭雙向循環(huán)鏈表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++ 中的異常拋出和捕獲方式

    C++ 中的異常拋出和捕獲方式

    這篇文章主要介紹了C++ 中的異常拋出和捕獲方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 用C語(yǔ)言實(shí)現(xiàn)排雷游戲

    用C語(yǔ)言實(shí)現(xiàn)排雷游戲

    大家好,本篇文章主要講的是用C語(yǔ)言實(shí)現(xiàn)排雷游戲,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • QT+OpenCV實(shí)現(xiàn)錄屏功能

    QT+OpenCV實(shí)現(xiàn)錄屏功能

    這篇文章主要為大家詳細(xì)介紹了QT+OpenCV實(shí)現(xiàn)錄屏功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C語(yǔ)言中#pragma?pack(1)的用法與注意點(diǎn)

    C語(yǔ)言中#pragma?pack(1)的用法與注意點(diǎn)

    #pragma用于指示編譯器完成一些特定的動(dòng)作,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中#pragma?pack(1)的用法與注意點(diǎn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • VSCode 搭建 Arm 遠(yuǎn)程調(diào)試環(huán)境的步驟詳解

    VSCode 搭建 Arm 遠(yuǎn)程調(diào)試環(huán)境的步驟詳解

    這篇文章主要介紹了VSCode 搭建 Arm 遠(yuǎn)程調(diào)試環(huán)境的步驟詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • C語(yǔ)言快速排序函數(shù)用法(qsort)

    C語(yǔ)言快速排序函數(shù)用法(qsort)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言的快排函數(shù)用法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • C語(yǔ)言求階乘之和的三種實(shí)現(xiàn)方法(先階乘再累加)

    C語(yǔ)言求階乘之和的三種實(shí)現(xiàn)方法(先階乘再累加)

    對(duì)于C/C++初學(xué)者來(lái)說(shuō),可能會(huì)經(jīng)常遇到如計(jì)算階乘等問題,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言求階乘之和的三種實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • C++操作SQLite簡(jiǎn)明教程

    C++操作SQLite簡(jiǎn)明教程

    這篇文章主要介紹了C++操作SQLite簡(jiǎn)明教程,包含創(chuàng)建表、插入數(shù)據(jù)、查詢數(shù)據(jù)等常用操作,需要的朋友可以參考下
    2014-06-06
  • C++發(fā)送郵件實(shí)現(xiàn)代碼

    C++發(fā)送郵件實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C++發(fā)送郵件的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語(yǔ)言實(shí)現(xiàn)順序表的全操作詳解

    C語(yǔ)言實(shí)現(xiàn)順序表的全操作詳解

    順序表,全名順序存儲(chǔ)結(jié)構(gòu),是線性表的一種,線性表用于存儲(chǔ)邏輯關(guān)系為“一對(duì)一”的數(shù)據(jù),順序表自然也不例外,不僅如此,順序表對(duì)數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu)也有要求,跟隨下文來(lái)具體了解吧
    2022-04-04

最新評(píng)論