線性表之順序儲存結構和鏈式儲存結構

2021-07-15 09:58:48 字數 1142 閱讀 3735

一、順序儲存結構

線性表幾種基本操作的思路

1、插入演算法:

1)插入位置不合理,丟擲異常

2)線性表長度超過(>=)陣列長度,丟擲異常或者是動態增加陣列容量(效率會變低)。

3)從最後乙個元素向前遍歷到第i個位置,分別將它們後移一位。

4)將要插入的元素插入在i處

5)線性表長度要+1

2、 刪除演算法:

1)刪除的位置不合理,丟擲異常

2)剔除被刪除的元素

3)從被刪除的位置往後面遍歷,將被遍歷的元素前移一位

4)表長要記得 - 1

3.線性表的順序儲存結構

理解它物理上的儲存方式,先佔位一定的記憶體空間,然後將同一種資料型別的元素依次存放進去

2)順序儲存結構封裝的三個屬性

a)儲存空間的其實位置,資料data的儲存位置就是線性表儲存空間的儲存位置

b)線性表的最大儲存容量:陣列的長度maxsize

c)線性表的當前長度:length

4、上述兩種操作的時間複雜度分析(在順序儲存結構中):

由此可見,線性表的順序儲存結構其實不適合頻繁做插入刪除的操作,因為表中相鄰元素之間記憶體位址是緊挨著,沒有間隙的,沒有辦法實現快速插入刪除,所以這種辦法效率不高(除非它在最後進行操作)。但是做讀存操作還是不錯的,因為它們的時間複雜度為o(1)。

二、鏈式儲存結構定義

:用一組任意儲存單元儲存線性表的資料元素,並且它可以儲存在記憶體中未被占用的任意位置。

詳細描述:     

在順序儲存結構中,每個元素只有乙個用來存自身的位置,而在鏈式結構裡面,每個元素除了要有乙個位置用來存自身資訊外,還要有乙個位置用來存放它後面的元素的儲存位址(這個位址會帶著我們找到下乙個元素)

我們稱存資料元素資訊的地方為

資料域,把存放下乙個元素儲存位置資訊的地方稱為

指標域,它們合起來被稱為儲存映像,即結點

。 鍊錶由n各結點鏈結而成,這就是

線性表的鏈式儲存結構

。在鍊錶中每個結點只包含乙個指標域,我們將這種鍊錶稱為

單鏈表。

線性表之順序儲存結構和鏈式儲存結構

線性表包括順序表和煉表,其中鍊錶又包括單鏈表 迴圈鍊錶 雙向鍊錶。順序儲存結構和鏈式儲存結構有所不同,具體區別如下表所示 線性表是一種邏輯結構,相同資料型別的n個資料元素的有限序列,除第乙個元素外,每個元素有且僅有乙個直接前驅,除最後乙個元素外,每個元素有且僅有乙個直接後繼。線性表的特點 元素個數有...

線性表順序儲存和鏈式儲存

輸入第1行是乙個整數n,表示之後還有n行輸入。每行輸入表示對線性表的一條操作指令,格式是 指令編號 引數1 引數2 如有 指令編號為3,表示find操作,此時只有乙個引數,即待查元素的值。順序儲存 include using namespace std const int maxn 1e4 1 st...

線性表之順序儲存結構與鏈式儲存結構

include define maxsize 20 define ok 1 define error 0 define true 1 define false 0 typedef int status status是函式的型別 typedef int elemtype elemtype應根據實際型別...