摘要:帶頭雙向循環(huán)鏈表結(jié)構(gòu)最復(fù)雜,一般用在多帶帶存儲數(shù)據(jù)。實際中使用的鏈表數(shù)據(jù)結(jié)構(gòu),都是帶頭雙向循環(huán)鏈表。
肚子餓了就要吃? ?~? ?嗝? ——— 路飛?
引子:順序表的問題及思考
(1)動態(tài)順序表
特點:
缺陷:
(2)如何解決:
這就引出了一個新的物理存儲結(jié)構(gòu)? ? ————>? ?鏈表
概念:鏈表是一種物理存儲結(jié)構(gòu)上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序實現(xiàn)的。
邏輯結(jié)構(gòu)(想象出來的),如圖:(單鏈表為例)
物理結(jié)構(gòu)(在內(nèi)存中的結(jié)構(gòu)),如圖:(單鏈表為例)
實際中要實現(xiàn)的鏈表的結(jié)構(gòu)非常多樣,以下情況組合起來就有8種鏈表結(jié)構(gòu):
雖然有這么多的鏈表的結(jié)構(gòu),但是我們實際中最常用還是兩種結(jié)構(gòu):
1. 無頭單向非循環(huán)鏈表:
結(jié)構(gòu)簡單,一般不會多帶帶用來存數(shù)據(jù)。實際中更多是作為其他數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),如哈希桶、圖的鄰接表等等。另外這種結(jié)構(gòu)在筆試面試中出現(xiàn)很多。
2. 帶頭雙向循環(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)了就知道了。
注:
plist/phead——>頭指針(一般保持不動)
cur——>當(dāng)前位置(? current簡寫)
?
?
找尾巴注意的點:
對比
//錯誤代碼 //找到原來的尾巴(進(jìn)而插尾) SLTNode* tail = phead; while (tail != NULL) { tail = tail->next; }
//正確代碼 //找到原來的尾巴(進(jìn)而插尾) SLTNode* tail = phead; while (tail->next != NULL) { tail = tail->next; }
解釋:
第一段代碼是錯誤的,因為
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/119630.html
摘要:初始化時指針走兩步,指針走一步,不停遍歷的變化最后快慢指針又相遇了,循環(huán)結(jié)束,代碼實現(xiàn)如下復(fù)雜度分析,假設(shè)鏈表長度為時間復(fù)雜度,鏈表無環(huán)時,快指針會先到達(dá)尾部,時間就是如果有環(huán),那么假設(shè)環(huán)部長度為,時間就是,也就是空間復(fù)雜度 上一篇文章我們分析了下鏈表之反轉(zhuǎn)單向鏈表,這篇文章我們來分析下另外一個關(guān)于鏈表的經(jīng)典題目。 判斷鏈表是否有環(huán)(在leetcode上的題目地址:環(huán)形鏈表) 題目描述...
摘要:文章首發(fā)于公眾號一件風(fēng)衣在編程中,我們常使用一組有順序的數(shù)據(jù)來表示某個有意義的數(shù)據(jù),這種一組元素的序列的抽象,就是線性表,簡稱表,是很多復(fù)雜數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)基礎(chǔ),在中,和就可以看作是線性表的實現(xiàn)。 文章首發(fā)于公眾號一件風(fēng)衣(ID:yijianfengyi) 在編程中,我們常使用一組有順序的數(shù)據(jù)來表示某個有意義的數(shù)據(jù),這種一組元素的序列的抽象,就是線性表,簡稱表,是很多復(fù)雜數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)基...
摘要:線性表是最基本的數(shù)據(jù)結(jié)構(gòu)之一,在實際程序中應(yīng)用非常廣泛,它還經(jīng)常被用作更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)基礎(chǔ)。鏈表之單鏈表線性表的定義,它是一些元素的序列,維持著元素之間的一種線性關(guān)系。 線性表學(xué)習(xí)筆記,python語言描述-2019-1-14 線性表簡介 在程序中,經(jīng)常需要將一組(通常是同為某個類型的)數(shù)據(jù)元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進(jìn)傳出函數(shù)等。一組數(shù)據(jù)中包含...
閱讀 3242·2021-10-27 14:20
閱讀 2525·2021-10-08 10:05
閱讀 1625·2021-09-09 09:33
閱讀 2901·2019-08-30 13:16
閱讀 1435·2019-08-29 18:34
閱讀 1169·2019-08-29 10:58
閱讀 1228·2019-08-28 18:22
閱讀 1226·2019-08-26 13:33