所謂的線性表是資料結構的一種。定義為零個或者多個資料元素的有限序列。
線性表分為順序儲存結構與鏈式儲存結構。
(1)順序儲存結構通俗來說就是我們平常熟悉的陣列,他就是一種典型的順序儲存結構。我們都知道陣列有自己的長度,並且一旦長度確定後不可以進行改變(不是絕對的)。說起順序儲存結構(陣列)我們就應該考慮一下他是怎麼儲存的。當我們建立乙個陣列的同時,會在記憶體空間內尋找一塊連續的儲存單元進行儲存。
1.訪問(get set)
對於陣列我們平常最多的操作肯定就是訪問值。當我們想取乙個值的時候是通過索引去取值的那麼這個過程中不會對其他元素的位置進行改變。所以這個過程中的時間複雜度為o(1)。當我們想陣列中存乙個值時,只需要像末尾追加乙個就好。但是要注意不可以超過陣列的最大長度。
2.插入與刪除
線性表的順序儲存結構的插入就相當於我們在排隊的過程中突然出現乙個插隊的人。如果這個插隊的人想要順利的進入隊伍那麼就需要從他插入的位置後的所有人都像後移動乙個位置。這裡的人就相當於我們的資料元素。位置相當於我們的儲存單元。所以此時的時間複雜度為o(n)。這裡還存在乙個情況像排隊的隊尾插入那麼這時複雜度為o(1)。那麼元素插入到i個位置。需要移動n-i個元素,由於每個位置插入元素的可能性是相同的。所以平均移動次數為 n-1/2。那麼他的平均時間複雜度還是o(n)。
那麼我們了解了線性表的順序儲存結構的儲存特點。那麼他們適合應用再怎麼樣的場景中呢?他們各自的優缺點呢?
優點:
(2)可以快速的get或者set其中的任意元素並且平均時間複雜度為o(1)。
缺點:
(1)當進行插入與刪除操作時候需要進行大量的元素移動。
(2)線性表長度較大時候,不能確定儲存空間的容量。
(3)容易造成空間碎片。(待理解)
未完待續(喜歡關注)
資料結構 鏈式儲存線性表
鏈式儲存結構的線性表 簡稱為鍊錶 將採用一組位址任意的儲存單元存放線性表中的資料元素,鏈式結構的線性表不會按線性的邏輯順序來儲存資料元素,它需要在每乙個資料元素裡儲存乙個引用下乙個資料元素的引用。優點 插入 刪除元素快,充分利用計算機記憶體空間 缺點 查詢元素需要整體遍歷,空間開銷大 單鏈表 cre...
資料結構 線性表的順序儲存和鏈式儲存
線性表進行順序儲存時,邏輯上相鄰的元素,其物理位置也相鄰,因此在己知第乙個元素儲存位置和元素序號的情況下,可計算出表中任意指定序號元素的儲存位置,即按照序號訪問元素時隨機的,該運算的時間複雜度為1,也就是常量級。而插入元素時就需要移動一些元素了,在最壞情況下要移動表中的所有元素,因此該運算的時間複雜...
線性表之順序儲存結構與鏈式儲存結構
include define maxsize 20 define ok 1 define error 0 define true 1 define false 0 typedef int status status是函式的型別 typedef int elemtype elemtype應根據實際型別...