線性表

       下個月就要自考了,這幾天在做數據結構導論的題。發現這本書一共就兩部分,分別是存儲結構(表、樹、圖)和對數據的操作(查找、排序)。今天想說說線性表的兩種存儲結構(順序存儲和鏈式存儲)。


       順序存儲顧名思義就是將表中的節點依次放在計算機內存中一組連續的存儲單元中,數據元素在線性表中的鄰接關係決定它們在存儲空間中的存儲位置,即邏輯結構中相鄰的節點期存儲位置也相鄰,一般使用數組來表示順序表。

       順序存儲是最簡單最原始的一種存儲方式,因爲是數組需預先定義,所以會浪費一些空間,第i個數據元素存放在數組下標爲“I-1”的位置。它的基本運算爲插入、刪除、定位。

       插入對應的題型一般是:在表長爲N的表上的第M個元素前插入,需要移動元素的個數爲N-M+1

       刪除對應的題型:把表長爲N的表上的第M個元素刪除,則M以後的元素向左移動,表長減1

       定位對應的題型:一般與時間複雜度聯繫,我們可以想象定位必定是一個一個依次查找,所以要用到一次循環,在表長爲N的表上定位時間複雜度就爲O(N)。


       鏈式存儲常見的有單鏈表、循環鏈表、雙向循環鏈表。加入了指針,指向下一數據元素,尾節點指針爲Null空指針,如果頭指針指向尾指針則爲空單鏈表。循環鏈表的最後一個節點的指針指向第一個結點。雙向循環鏈表加入了一個指向前驅結點的指針prior。

       需要注意的是插入運算,單鏈表需要用一個指針指向待刪結點的前驅結點。在雙循環鏈表中,可直接刪除。


       在比較兩種方式的時候,一般比較它們的時間複雜度,這也是經常出題的點。按位置查找運算時,順序表是隨機的,時間複雜度是O(1),單鏈表需要掃描用到循環,所以爲O(N)。定位運算時,都要掃描用到循環,所以時間複雜度都爲O(N)。插入、刪除運算時,都需要定位,所以時間複雜度都爲O(N)。





發佈了49 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章