一、順序儲存結構
線性表幾種基本操作的思路
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應根據實際型別...