第二章 線性表(2 5 3 2 6)

2022-09-20 17:42:11 字數 1785 閱讀 6797

目錄2.5.5雙向鍊錶

2.6順序表和煉表的比較

2.6.2時間效能的比較

將單鏈表中的終端結點的指標端由空指標改為指向頭節點,就可以使整個鍊錶形成乙個環,這種頭尾相連的鍊錶稱為單迴圈鍊錶,簡稱迴圈鍊錶。

它可以解決乙個很麻煩的問題:如何從當中乙個結點出發,訪問到鍊錶的全部結點

雙向鍊錶是在單鏈表的每個結點中,再設定乙個指向其前驅結點的指標域。

所以在雙向鍊錶中的結點都有兩個指標域,乙個指向直接後繼,乙個指向直接前驅。

/*線性表的雙向鍊錶儲存結構*/

typedef struct dulnode

dulnode, *dulinklist;

順序表的儲存空間需要預先分配,元素個數擴充受一定限制,容易造成儲存空間浪費或者空間溢位的現象;而鍊錶不需要預先為其分配空間,只要記憶體空間允許,鍊錶中的元素個數就沒有限制。基於此,當線性表的長度變化較大,難以預估儲存規模的時候,最好採用鍊錶作為儲存結構。

鍊錶的每個結點除了設定資料域用來儲存資料元素外,還需要額外設定指標域,用來儲存指示元素之間邏輯關係的指標,從儲存密度上講,這是不經濟的。所謂儲存密度是指資料元素本身所占用的儲存量和整個結點結構所占用的儲存量之比,即

儲存密度=資料元素本身所占用的儲存量/結點結構所占用的儲存量。

儲存密度越大儲存空間的利用率越高。顯然,順序表的儲存密度為1,而鍊錶的儲存密度小於1。如果每個元素資料域占用的空間小。例如若單鏈表的結點資料均為整數,指標所占用的空間和整型量相同,則單鏈表的儲存密度為0.5。因此,如果不考慮順序表中的空閒區,則順序表的儲存空間的利用率為%100,而單鏈表的儲存空間利用率僅為%50。基於此,當線性表的長度變化不大,易於事先確定其大小時,為了節約儲存空間,益採用順序表作為儲存結構。

順序表是由陣列實現的,它是一種隨機訪問的結構,指定任意乙個位置序號i,都可以在o(1)時間內直接訪問該位置的元素,即取值操作的效率高;而鍊錶是一種順序儲存結構,按位置訪問鍊錶第i個元素的時候,只能從表頭開始依次向後遍歷鍊錶,直到找到第i個位置上的元素,時間複雜度為o(n),即取值操作的效率低。

基於此,若線性表的主要操作是和元素位置緊密相關的這類取值操作,很少做插入和刪除時,益採用順序表作為儲存結構。

對於鍊錶,在確定插入和刪除的位置後,插入或刪除操作無需移動資料,只需要修改指標,時間複雜度為o(1)。然而對於順序表,進行插入或刪除時,平均需要移動表中近一半的結點,時間複雜度為o(n)。尤其是當某個結點的資訊量較大時,移動結點的時間開銷就相當客觀。

基於此,對於頻繁進行插入或刪除操作的線性表,益採用鍊錶作為儲存結構。

總結:當線性表的長度變化不大時,易於事先確定其大小時,為了節約儲存空間,益採用順序表作為儲存結構。

而對於頻繁進行插入或刪除操作的線性表,益採用鏈式儲存結構。

第二章 線性表

定義 線性表簡稱表,是n n 0 個具有相同型別的資料元素的有限序列,線性表中資料元素的個數稱為線性表的長度。長度等於0時稱空表,乙個非空表通常記作 l a1,a2,an 線性表的性質 1.有限性 元素個數有限 2.相同性 元素型別相同 3.順序性 除首位元素外,相鄰元素都有前驅和後繼 2.1.2線...

第二章線性表

2 1線性表的邏輯結構 1 線性表是n 0個具有相同型別的資料元素的有限序列。空表是長度等於零的線性表。2 特性 有限性 相同性 順序型。2 2線性表的順序儲存結構及實現 1 c 中陣列的下標是從0開始的,而線性表中元素的序號是從1開始的。線性表中第i個元素儲存在陣列中下標為i 1的位置。2 順序表...

第二章 線性表

寫在前邊的話寫 好比寫詩,資料結構就好比唐詩三百首,熟讀並默寫這是基本功能,所以要閒的沒事可以在紙上多寫 線性表的定義和基本操作 線性表的實現 2.1順序儲存結構 2.2鏈式儲存結構 2.3線性表的應用 線性表的邏輯特性 只有乙個表頭元素,只有乙個表尾元素,表頭元素沒有前驅,表尾元素沒有後繼元素,其...