數(shù)據(jù)結(jié)構(gòu)(一)

一.鏈表(靈活的內(nèi)存動(dòng)態(tài)管理鬼吵,反結(jié)構(gòu):線性表順序結(jié)構(gòu))

含義:一種物理存儲(chǔ)單元上非連續(xù)荣倾、非順序的存儲(chǔ)結(jié)構(gòu)枉证,數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。

生成:鏈表由一系列結(jié)點(diǎn)(鏈表中每一個(gè)元素稱為結(jié)點(diǎn))組成符相,結(jié)點(diǎn)可以在運(yùn)行時(shí)動(dòng)態(tài)生成。

結(jié)點(diǎn)包括兩個(gè)部分:一個(gè)是存儲(chǔ)數(shù)據(jù)元素的數(shù)據(jù)域帘靡,另一個(gè)是存儲(chǔ)下一個(gè)結(jié)點(diǎn)地址的指針域淆攻。

特點(diǎn):鏈表在插入的時(shí)候可以達(dá)到O(1)的復(fù)雜度,比另一種線性表順序表快得多已日,但是查找一個(gè)節(jié)點(diǎn)或者訪問特定編號(hào)的節(jié)點(diǎn)則需要O(n)的時(shí)間垛耳,而線性表和順序表相應(yīng)的時(shí)間復(fù)雜度分別是O(logn)和O(1)。

缺點(diǎn):

鏈表失去了數(shù)組隨機(jī)讀取的優(yōu)點(diǎn)飘千,同時(shí)鏈表由于增加了結(jié)點(diǎn)的指針域堂鲜,空間開銷比較大。

優(yōu)點(diǎn):

鏈表允許插入和移除表上任意位置上的節(jié)點(diǎn)护奈,但是不允許隨機(jī)存取缔莲。

鏈表有很多種不同的類型:

1.單向鏈表:有一個(gè)缺點(diǎn)就是要找一個(gè)數(shù),必須要從頭開始找起霉旗,十分麻煩痴奏。

2.雙向鏈表:

必須使其最后一個(gè)結(jié)點(diǎn)的指針指向表頭結(jié)點(diǎn),而不是象單鏈表那樣置為NULL厌秒。

是判斷該結(jié)點(diǎn)鏈域的值是否是表頭結(jié)點(diǎn)读拆,當(dāng)鏈域值等于表頭指針時(shí),說明已到表尾简僧。而非象單鏈表那樣判斷鏈域值是否為NULL建椰。

循環(huán)鏈表:結(jié)點(diǎn)除含有數(shù)據(jù)域外,還有兩個(gè)鏈域岛马,一個(gè)存儲(chǔ)直接后繼結(jié)點(diǎn)地址棉姐,一般稱之為右鏈域屠列;一個(gè)存儲(chǔ)直接前驅(qū)結(jié)點(diǎn)地址,一般稱之為左鏈域伞矩。

優(yōu)化:

插入操作處理順序:中間節(jié)點(diǎn)的邏輯笛洛,后節(jié)點(diǎn)邏輯,前節(jié)點(diǎn)邏輯乃坤。按照這個(gè)順序處理可以完成任何鏈表的插入操作苛让。

刪除操作的處理順序:前節(jié)點(diǎn)邏輯,后節(jié)點(diǎn)邏輯湿诊,中間節(jié)點(diǎn)邏輯狱杰。

按照此順序可以處理任何鏈表的刪除操作。

如果不存在其中的某個(gè)節(jié)點(diǎn)略過即可厅须。

二.線性表

分類:

一般線性表:就是我們通常所說的“線性表”仿畸,可以自由的刪除或添加結(jié)點(diǎn)。

受限線性表:包括棧和隊(duì)列和字符串朗和,受限表示對(duì)結(jié)點(diǎn)的操作受限制错沽。

特點(diǎn):

均勻性:雖然不同數(shù)據(jù)表的數(shù)據(jù)元素可以是各種各樣的,但對(duì)于同一線性表的各數(shù)據(jù)元素必定具有相同的數(shù)據(jù)類型和長(zhǎng)度眶拉。

有序性:各數(shù)據(jù)元素在線性表中的位置只取決于它們的序號(hào)千埃,數(shù)據(jù)元素之前的相對(duì)位置是線性的,即存在唯一的“第一個(gè)“和“最后一個(gè)”的數(shù)據(jù)元素忆植,除了第一個(gè)和最后一個(gè)外放可,其它元素前面均只有一個(gè)數(shù)據(jù)元素(直接前驅(qū))和后面均只有一個(gè)數(shù)據(jù)元素(直接后繼)。

三.鏈表和線性表區(qū)別

1.數(shù)組是將元素在內(nèi)存中連續(xù)存放唱逢,由于每個(gè)元素占用內(nèi)存相同吴侦,可以通過下標(biāo)迅速訪問數(shù)組中任何元素。但是如果要在數(shù)組中增加一個(gè)元素坞古,需要移動(dòng)大量元素,在內(nèi)存中空出一個(gè)元素的空間劫樟,然后將要增加的元素放在其中痪枫。同樣的道理,如果想刪除一個(gè)元素叠艳,同樣需要移動(dòng)大量元素去填掉被移動(dòng)的元素奶陈。如果應(yīng)用需要快速訪問數(shù)據(jù),很少或不插入和刪除元素附较,就應(yīng)該用數(shù)組吃粒。

2.鏈表恰好相反,鏈表中的元素在內(nèi)存中不是順序存儲(chǔ)的拒课,而是通過存在元素中的指針聯(lián)系到一起徐勃。比如:上一個(gè)元素有個(gè)指針指到下一個(gè)元素事示,以此類推,直到最后一個(gè)元素僻肖。如果要訪問鏈表中一個(gè)元素肖爵,需要從第一個(gè)元素開始,一直找到需要的元素位置臀脏。但是增加和刪除一個(gè)元素對(duì)于鏈表數(shù)據(jù)結(jié)構(gòu)就非常簡(jiǎn)單了劝堪,只要修改元素中的指針就可以了。如果應(yīng)用需要經(jīng)常插入和刪除元素你就需要用鏈表數(shù)據(jù)結(jié)構(gòu)了揉稚。

3.邏輯結(jié)構(gòu)和內(nèi)存存儲(chǔ)角度來看

(1) 從邏輯結(jié)構(gòu)角度來看

a, 數(shù)組必須事先定義固定的長(zhǎng)度(元素個(gè)數(shù))秒啦,不能適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況。當(dāng)數(shù)據(jù)增加時(shí)搀玖,可能超出原先定義的元素個(gè)數(shù)帝蒿;當(dāng)數(shù)據(jù)減少時(shí),造成內(nèi)存浪費(fèi)巷怜。

b,鏈表動(dòng)態(tài)地進(jìn)行存儲(chǔ)分配葛超,可以適應(yīng)數(shù)據(jù)動(dòng)態(tài)地增減的情況,且可以方便地插入延塑、刪除數(shù)據(jù)項(xiàng)绣张。(數(shù)組中插入、刪除數(shù)據(jù)項(xiàng)時(shí)关带,需要移動(dòng)其它數(shù)據(jù)項(xiàng))

(2)從內(nèi)存存儲(chǔ)角度來看

a,(靜態(tài))數(shù)組從棧中分配空間, 對(duì)于程序員方便快速,但自由度小侥涵。

b, 鏈表從堆中分配空間, 自由度大但申請(qǐng)管理比較麻煩.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宋雏,隨后出現(xiàn)的幾起案子芜飘,更是在濱河造成了極大的恐慌,老刑警劉巖磨总,帶你破解...
    沈念sama閱讀 212,454評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗦明,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡蚪燕,警方通過查閱死者的電腦和手機(jī)娶牌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來馆纳,“玉大人诗良,你說我怎么就攤上這事÷呈唬” “怎么了鉴裹?”我有些...
    開封第一講書人閱讀 157,921評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我径荔,道長(zhǎng)督禽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,648評(píng)論 1 284
  • 正文 為了忘掉前任猖凛,我火速辦了婚禮赂蠢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辨泳。我一直安慰自己虱岂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評(píng)論 6 386
  • 文/花漫 我一把揭開白布菠红。 她就那樣靜靜地躺著第岖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪试溯。 梳的紋絲不亂的頭發(fā)上蔑滓,一...
    開封第一講書人閱讀 49,950評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音遇绞,去河邊找鬼键袱。 笑死,一個(gè)胖子當(dāng)著我的面吹牛摹闽,可吹牛的內(nèi)容都是我干的蹄咖。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼付鹿,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼澜汤!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起舵匾,我...
    開封第一講書人閱讀 37,817評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤俊抵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后坐梯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體徽诲,經(jīng)...
    沈念sama閱讀 44,275評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評(píng)論 2 327
  • 正文 我和宋清朗相戀三年烛缔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了馏段。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,724評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡践瓷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出亡蓉,到底是詐尸還是另有隱情晕翠,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站淋肾,受9級(jí)特大地震影響硫麻,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜樊卓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評(píng)論 3 316
  • 文/蒙蒙 一拿愧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碌尔,春花似錦浇辜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叹坦,卻和暖如春熊镣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背募书。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工绪囱, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人莹捡。 一個(gè)月前我還...
    沈念sama閱讀 46,503評(píng)論 2 361
  • 正文 我出身青樓鬼吵,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親道盏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子而柑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容