資料結構之線性表小結

2021-10-07 19:21:26 字數 2191 閱讀 4752

線性表小結:

線性表的定義:零個或多個資料元素的有限序列(兩個特性:有限,序列;同時要求資料的型別相同)

線性表的儲存結構:順序儲存,鏈式儲存

順序儲存結構

定義:指的是用一段連續的儲存單元依次儲存線性表的資料元素。

實現方式:用一維陣列來實現順序儲存結構,即把第乙個元素存放到陣列下標為0的位置中,接著把線性表相鄰的元素儲存在陣列中相鄰的位置。其中陣列的長度是存放線性表的儲存空間的長度,因此任意時刻,線性表的長度應該小於陣列的長度。

訪問特點

插入和刪除特點

最好的情況是插入到第乙個位置或者是刪除最後乙個位置的元素,時間複雜度為o(1);最壞的情況是插入到最後乙個位置,或者是刪除第乙個元素,時間複雜度是o(n);平均情況是o(n-1/2),因此平均時間複雜度為o(n)。

順序儲存結構的優缺點:

優點:

無需為表示表中的元素之間的邏輯關係而增加額外的儲存空間。

可以快速的訪問表中的任意位置的元素

缺點:

插入和刪除操作需要移動大量的元素

當線性表的長度變化較大時,難以確定儲存空間的大小

會造成儲存空間的「碎片」

鏈式儲存結構:

定義:用一組任意的儲存單元儲存線性表的元素,這組儲存單元可以是連續的,也可以是不連續的,這就意味著線性表中的元素可以存在記憶體中未被占用的任意的位置。因此在鏈式結構中,資料元素除了儲存資料的元素資訊之外,還要儲存其後繼元素的儲存位址,因此每個結點包括資料域和指標域。

單鏈表的組成:

頭結點:是為了操作的統一和方便設立的,放在第乙個元素的結點之前(有了頭結點對在第一元素結點前插入結點和刪除第一結點,其操作與其他結點的操作就統一起來了,但是頭結點不一定是鍊錶的必需元素),其資料域一般為空(null)無意義,也可在資料域中存放鍊錶的長度。

頭指標:鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標,頭結點中的指標域指向第乙個結點;同時頭指標有標識作用,常以鍊錶的名字命名;無論鍊錶是否為空,頭指標都不為空(空煉表頭指標不為空,頭結點中的指標域為空),且頭指標是鍊錶的必要元素。

其他線性表資料元素結點

鍊錶的插入與刪除特點:

插入和刪除由兩部分組成:第一部分就是遍歷查詢第i個元素,第二部分就是插入和刪除操作。時間複雜度都是o(n);在插入和刪除操作上鏈式儲存結構並沒有比順序儲存結構有太大的優勢,但是對於頻繁的插入和刪除操作,單鏈表的效率優勢非常明顯。(例:在第i個位置插入10個元素,對於順序儲存結構,每一次插入操作就是o(n)的時間複雜度,但是對於單鏈表的話,只需要在第一次找到i元素的位置,此時的時間複雜度為o(n),接下來的插入的操作時間複雜度均為o(1))。

4.單鏈表結構與順序儲存結構的對比

儲存分配方式

時間效能

空間效能

順序儲存方式:用一段連續的儲存單元一次儲存線性表的資料元素。

單鏈表:採用鏈式儲存結構,用一組任意的儲存單元來存放線性表的元素

查詢:

順序:o(1)

單鏈表:o(n)

插入和刪除

順序儲存結構:o(n)

單鏈表:在找出要插入的位置之後插入操作時間複雜度為o(1)

順序儲存結構:需要預先分配儲存空間,空間分配過大的話,浪費儲存空間;分配過小的話,會發生上溢。

單鏈表:不需要預先分配儲存空間,只要有空間就可以分配,元素的個數也不受限

結論:

1.若頻繁查詢,很少進行插入和刪除操作的話,適宜用順序儲存結構;

需要頻繁的插入和刪除操作,宜採用單鏈表結構

2.線性表中的元素個數變化較大時或者不清楚元素的個數適宜採用單鏈表;線性表的元素的個數固定或者提前知道陣列元素的大致長度,適宜用順序儲存結構。

資料結構之線性表小結

以下都是用自己的話來總結的,可能和專業術語有偏差 大鳥勿噴 留給自己複習使用啦 一 資料結構 其實就是在你編寫乙個程式之前,你所用到的資料想用怎樣方式存起來 固定長度的靜態儲存 順序儲存,一般用陣列 變長的動態儲存 鏈式儲存,一般用指標 除此之外,資料之間也會有一定的聯絡,方便互相找到彼此 邏輯結構...

mysql 線性表 資料結構之線性表

概要 參考 大話資料結構 把常用的基本資料結構梳理一下。線性表定義 線性表 list 零個或多個資料元素的有限序列。若將線性表記為 a 1,cdots,a a i,a cdots,a n 則表中 a 領先於 a i a i 領先於 a 稱 a 是 a i 的直接前驅元素,a 是 a i 的直接後繼元...

資料結構之線性表

從現在開始,我們開始討論如何實現一些常用的資料結構和其中的一些經典演算法.等把資料結構講完了.我可能會繼續討論vc 的程式設計只是以及vs平台下的c c 開發等等.呵呵.我們進入正題吧.我在這裡就只實現線性表的連表結構.當然了,這裡實際上包含了好多知識.我希望大家在引用的時候.一定要領悟裡面的一些變...