大話數(shù)據(jù)結構-第3章 線性表

3. 線性表

3.1 線性表(List): 零個或多個數(shù)據(jù)元素的有限序列


3.2 線性表的定義

若將線性表記為(a1, ... ,ai-1, ai, ai+1, ... , an), 則表中 ai-1 領先于 ai, ai, 領先于 ai+1, 稱ai-1是ai的直接前驅元素, ai+1 是 ai 的直接后繼元素. 當 i=1, 2, ... , n-1 時, ai 有且僅有一個直接后繼, 當 i=2, 3 , ... , n 時, ai 有且僅有一個直接前綴.
線性元素的個數(shù) n (n>=0) 定義為線性表的長度, 當 n = 0 時, 稱為空表


3.5 順序存儲結構的插入與刪除

  • 線性表的順序存儲結構, 在存, 讀 數(shù)據(jù)時, 時間復雜度是 O[1]
  • 插入, 刪除時, 時間復雜度為 O[n]

線性表順序存儲結構的優(yōu)缺點

  • 優(yōu)點:
    • 無需為表示表中元素之間的邏輯關系而增加二外的存儲空間
    • 可以快速的存取表中任一位置的元素
  • 缺點:
    • 插入和刪除操作需要移動大量的元素
    • 當線性表長度變化較大時, 難以確定存儲空間的容量
    • 造成存儲空間的 "碎片"

鏈表

3.6 線性表的鏈式存儲結構

鏈式結構中, 除了要存儲數(shù)據(jù)元素信息外, 還要存儲它的后繼元素地址

為了表示每個元素ai與其直接后繼數(shù)據(jù)元素ai+1之間的邏輯關系, 對數(shù)據(jù)元素ai來說, 除了存儲本身的信息之外, 還需存儲一個指示其直接后繼的信息(即直接后繼的存儲位置). 我們把存儲元素信息的域稱為數(shù)據(jù)域, 把存儲直接后繼位置的域稱為指針域. 指針域中存儲的信息稱為指針或者鏈. 這兩部分信息組成數(shù)據(jù)元素ai的存儲映像, 稱為節(jié)點(Node)

n 個節(jié)點(ai的存儲映像)鏈接成一個鏈表, 即 為線性表(a1,a2,...an)的鏈式結構, 因為此鏈表的每個節(jié)點中只包含有一個指針域, 所以叫做單鏈表.

鏈表中第一個節(jié)點的存儲位置叫做頭指針, 最后一個節(jié)點為空(NULL 或者 ^)

單鏈表的第一個節(jié)點前附加一個節(jié)點,稱為頭節(jié)點(不是必須的). 不存儲任何信息, 指向第一個節(jié)點.


3.7 單鏈表的讀取

工作指針后移, 一個一個順序讀取.


3.8 單鏈表的插入與刪除

插入與刪除的時間復雜度都是O[1], 對于插入和刪除數(shù)據(jù)越頻繁的操作, 單列表的效率優(yōu)勢就越是明顯


3.9 單鏈表的整表創(chuàng)建

    1. 頭插法:
    1. 尾插法:

3.10 單鏈表的整表刪除

將鏈表中的所有元素依次刪除


3.11 單鏈表結構與順便存儲結構優(yōu)缺點

存儲分配方式

  • 順便存儲結構用一段連續(xù)的存儲單元依次存儲線性表的數(shù)據(jù)元素
  • 單鏈表采用鏈式存儲結構,用一組任意的存儲單元存放線性表的元素

時間性能

  • 查找:
    • 順序存儲o(1)
    • 單鏈表o(n)
  • 插入和刪除
    • 順序存儲結構需要平均移動表上一般的元素 時間為o(n)
    • 單鏈表在得到某位置的指針后, 插入和刪除時間僅為o(1)

空間性能
- 順序存儲結構需要預分配存儲空間, 分大了 浪費, 分小了, 容易發(fā)生上溢
- 單鏈表不需要分配存儲空間, 只要有就可以分配, 元素個數(shù)也不受限制

結論:

  • 若線性表需要頻繁查找, 很少進行插入和刪除操作時, 宜采用順序存儲結構. 若需要頻繁插入和刪除時, 宜采用單鏈表結構
  • 當線性表中的元素個數(shù)變化較大或者根本不知道有多大時, 最好用單鏈表結構. 這樣可以不需要考慮存儲空間的大小問題. 而如果實現(xiàn)知道線性表的大致長度,如一年12個月, 一周就是星期一至星期天共七天, 用順序存儲結構效率會高很多

3.12 靜態(tài)鏈表
優(yōu)點: 在插入和刪除操作時, 只需要修改游標, 不需要移動元素, 從而改進了在順序存儲結構中的插入和刪除操作需要移動大量元素的缺點
缺點: 沒有解決連續(xù)存儲分配帶來的表長難以確定的問題
失去了順序存儲結構隨機存取的特性

3.13 循環(huán)鏈表
將單鏈表中終端節(jié)點的指針端由空指針改為指向頭節(jié)點, 就使整個單鏈表形成一個環(huán), 這種頭尾相接的單鏈表稱為單循環(huán)鏈表, 簡稱循環(huán)鏈表(circular linked list)

3.14 雙向鏈表
雙向列表插入, 要先完善插入元素的 next 和 prior 指向, 再完善其他的

3.15 總結
- 線性表
- 順序存儲結構
- 鏈式存儲結構
- 單鏈表
- 靜態(tài)鏈表
- 循環(huán)鏈表
- 雙向鏈表

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末脆淹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子沽一,更是在濱河造成了極大的恐慌未辆,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锯玛,死亡現(xiàn)場離奇詭異咐柜,居然都是意外死亡,警方通過查閱死者的電腦和手機攘残,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門拙友,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歼郭,你說我怎么就攤上這事〔≡” “怎么了漾根?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵鲫竞,是天一觀的道長。 經(jīng)常有香客問我从绘,道長,這世上最難降的妖魔是什么陕截? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任批什,我火速辦了婚禮,結果婚禮上驻债,老公的妹妹穿的比我還像新娘。我一直安慰自己却汉,他們只是感情好合砂,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布源织。 她就那樣靜靜地躺著,像睡著了一般谈息。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侠仇,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音互亮,去河邊找鬼。 笑死豹休,一個胖子當著我的面吹牛,可吹牛的內容都是我干的威根。 我是一名探鬼主播凤巨,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼敢茁,長吁一口氣:“原來是場噩夢啊……” “哼姥卢!你這毒婦竟也來了?” 一聲冷哼從身側響起独榴,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瓶堕,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郎笆,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡忘晤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凄吏。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡痕钢,死狀恐怖序六,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情例诀,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布暮刃,位于F島的核電站,受9級特大地震影響爆土,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一背犯、第九天 我趴在偏房一處隱蔽的房頂上張望盅抚。 院中可真熱鬧,春花似錦妄均、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞧毙。三九已至,卻和暖如春宙彪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背有巧。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留男图,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像峻凫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子荧琼,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內容

  • 定義線性表(List):零個或多個數(shù)據(jù)元素的有限序列 數(shù)學定義若將線性表記為(a1, …, ai-1, ai, a...
    梁煒東閱讀 657評論 0 0
  • 1.線性表的定義 線性表:零個或多個數(shù)據(jù)元素的有限序列序列:也就是說元素之間是有順序的,若元素存在多個,則第一個元...
    e40c669177be閱讀 2,035評論 6 15
  • 本文內容取自于小甲魚的數(shù)據(jù)結構與算法堰乔。http://www.reibang.com/p/230e6fde9c75 ...
    阿阿阿阿毛閱讀 2,877評論 0 7
  • 從數(shù)據(jù)的邏輯結構來分脐恩,數(shù)據(jù)元素之間存在的關聯(lián)關系被稱為數(shù)據(jù)的邏輯結構。歸納起來驶冒,應用程序中的數(shù)據(jù)大致喲如下四種基本...
    Jack921閱讀 918評論 0 2
  • 前言 上一篇《數(shù)據(jù)結構和算法之時間復雜度和空間復雜度》中介紹了時間復雜度的概念和常見的時間復雜度韵卤,并分別舉例子進行...
    VV木公子閱讀 4,323評論 2 26