1. 程式人生 > >資料結構——線性表——知識點總結

資料結構——線性表——知識點總結

自己看的書,對書上的內容進行總結。此篇為相關知識點總結

線性表的定義:線性表是具有相同資料型別的n個數據元素的有限序列。n為表長,當n = 0時,為空表。

線性表公式表示:L = (a1,a2,a3.......an), a1 為表頭元素,an為表尾元素。除了第一個元素,每個元素都有且僅有一個直接前驅,除了最後一個元素,每個元素有且僅有一個直接後繼。

線性表的特點:有限個數;邏輯上有順序性;每個表元素都是單個元素;表元素型別皆相同;元素具有抽象性

線性表與連結串列/順序表之間的區別:線性表是一種邏輯結構,表示元素之間一一對應的關係;連結串列和順序表指的是儲存結構。

在計算機內,可以用不同的方式來表示線性表,最簡單最常用的方式是順序儲存結構—順序表,而連結串列則經常被用來表示非線性的資料結構,也是一種常用的表示線性表的方法。

順序表:線性表的順序儲存被稱為順序表,它是一組地址連續的順序儲存單元,依次儲存線性表中的資料元素。注意順序儲存是一種讀寫方式,不是儲存方式,有別於順序儲存。線性表支援隨機存取的順序儲存結構

順序表的優點:1:儲存密度高;2:元素可以隨機讀取;3:儲存位置可以簡單的使用公式來表示

連結串列:由於順序表的插入刪除元素操作需要移動大量的元素,影響執行效率,所以引入了鏈式儲存,鏈式儲存通過“鏈”建立起資料元素之間的邏輯關係,只需要修改指標進行插入、刪除操作。分為單鏈表和雙鏈表

連結串列的優點:1:適合隨機的插入和刪除操作;2:儲存空間大小不需要提前設定;3:可以進行動態儲存

順序表和連結串列的比較:

1:存取,連結串列只能從表頭開始順序存取元素;順序表可以隨機存取

2:儲存方式,順序表相鄰儲存;連結串列物理儲存位置不一定相鄰,其邏輯關係是通過指標來連結的

3:順序表在靜態分配時,不可改變記憶體大小,可能會造成溢位,動態分配時,插入和刪除需要移動大量的元素,效率很低。但連結串列只在需要的時候申請記憶體,操作靈活

單鏈表:線性表的鏈式儲存稱為單鏈表,它不是連續的儲存空間,元素之間是通過指標進行聯絡。我們通常使用“頭指標”來標識一個單鏈表,當頭指標為“NULL”時表示一個空表,此外,為了操作上的方便,在單鏈表第一個結點之前附加一個結點,稱之為“頭結點”,頭結點的資料域可以不設任何資訊,也可以記錄表長等相關資訊。但是不管帶不帶頭結點,頭指標始終指向連結串列的第一個結點。注意頭結點不計入表長。

特點:非隨機存取,不能直接從表中找到特定的結點,需要從表頭開始遍歷,依次查詢

雙鏈表:單鏈表結點中只有一個指向其後繼的指標,這使得單鏈表只能從頭到尾依次順序的向後遍歷,若要訪問某個結點的前驅,只能從頭開始遍歷,訪問後繼結點的時間複雜度為O(1),訪問前驅結點的時間複雜度為O(n);為克服以上缺點,引入雙鏈表,一個結點含有兩個指標,分別指向其前驅結點和後繼結點