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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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é)點!

 看了上面的那么多的圖解,相信刪除指定節(jié)點對你來說也很簡單吧!我就直接上代碼了!

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ù)據(jù)結(jié)構(gòu)就頭疼,但是我想說,不要嫌畫圖麻煩,一定要多畫圖,這樣更有利于我們實現(xiàn)代碼,靠腦袋空想是想不出來的!

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

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

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

相關(guān)文章

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

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

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

    用C語言實現(xiàn)排雷游戲

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

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

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

    C語言中#pragma?pack(1)的用法與注意點

    #pragma用于指示編譯器完成一些特定的動作,下面這篇文章主要給大家介紹了關(guān)于C語言中#pragma?pack(1)的用法與注意點的相關(guān)資料,文中通過實例代碼介紹的非常詳細(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)境的步驟詳解,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • C語言快速排序函數(shù)用法(qsort)

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

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

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

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

    C++操作SQLite簡明教程

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

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

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

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

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

最新評論