資料結構與演算法 線性表的基本操作

2021-10-07 02:29:30 字數 1879 閱讀 2322

線性表的概念

線性表是乙個有限序列。其中的資料元素具有相同的特性。

線性表的儲存結構

1、資料元素在記憶體中集中儲存,採用順序儲存結構(順序表)。

2、資料元素在記憶體中分散儲存,採用鏈式儲存結構(鍊錶)。

線性表結構的定義

1、順序表的結構定義

typedef struct sqlist

sqlist;

或者:

typedef struct sqlist

sqlist;

2、單鏈表結點結構定義

typedef struct lnode

lnode;

3、雙鏈表結點結構定義

typedef struct dlnode

dlnode;

4、靜態鍊錶結點定義

typedef struct component

component;

鍊錶的形式

1、單鏈表

(1)結點的組成:1個資料域+1指標域。

(2)頭結點:在開始結點之前的結點(可有可無)。其值域不包含任何資訊。

(3)開始結點:第乙個元素所在的結點。

(4)頭指標:永遠指向鍊錶中第乙個結點的位置(如果鍊錶有頭結點,頭指標指向頭結點;否則,頭指標指向首元結點)。

(5)帶頭結點的單鏈表:頭指標head指向頭結點。頭指標head始終不等於null,head->next等於null的時候鍊錶為空。

(6)不帶頭結點的的單鏈表:頭指標head指向開始結點,當head等於null時煉表為空。

2、雙鏈表

(1)結點的組成:1個資料域+2個指標域。

(2)帶頭結點:當head->next為null時煉表為空。

(3)不帶頭結點:當head為null時煉表為空。

3、迴圈單鏈表

(1)迴圈單鏈表:將單鏈表的最後乙個指標域指向鍊錶的中的第乙個結點即為迴圈單鏈表。

(2)帶頭結點:當head等於head->next時煉表為空。

(3)不帶頭結點:當head等於null時煉表為空。

4、迴圈雙鏈表

(1)迴圈雙鏈表:將最後乙個結點的next指標指向第乙個結點,將第乙個結點的prior指標指向終端結點即為迴圈雙鏈表。

(2)帶頭結點:當head->next和head->prior兩個指標都等於head時煉表為空。

(3)不帶頭結點:當head等於null時煉表為空。

5、靜態鍊錶

(1)靜態鍊錶:被侷限在特定記憶體空間的鍊錶即為靜態鍊錶。

(2)靜態鍊錶與動態鍊錶的區別:靜態鍊錶限制了資料元素存放的位置範圍;動態鍊錶是整個記憶體空間。

(3)結點的組成:資料域+游標。

順序表和煉表的比較

1、基於空間的比較(儲存分配的方式、儲存密度)

(1)儲存分配方式的比較

順序表的儲存空間是靜態分配的,鍊錶的儲存空間是動態分配的。

(2)儲存密度(儲存密度=結點值域所佔的儲存量/結點結構所佔的儲存總量)的比較

順序表的儲存密度=1,鏈式表的儲存密度<1(因為結點中有指標域)。

2、基於時間的比較

(1)訪問方式的比較

順序表是隨機訪問,鍊錶是順序訪問。

(2)插入/刪除時移動元素的個數

順序表平均需要移動近一半元素,鍊錶不需要移動元素,只需修改指標。

以上就是關於線性表的一些概念性的筆記,如有錯誤,歡迎指出!

資料結構與演算法 線性表

概念 一種資料結構,每個結點最多只有乙個前驅結點和乙個後繼結點 類別 順序表 定長 鍊錶 變長 棧 棧頂刪除 彈棧 棧頂插入 壓棧 後進先出 lifo 佇列 隊頭刪除 出隊 隊尾插入 入隊 先進先出 fifo 線性表的抽象資料型別定義 c 1.template2.class list 棧的抽象資料型...

資料結構與演算法 線性表

n維向量 x1,x2,xn 是乙個長度為n的線性表 英文小寫字母表 a,b,c,z 是乙個長度為26的線性表 一年中的四個季節 春,夏,秋,冬 是乙個長度為4的線性表 矩陣是乙個比較複雜的線性表 學生情況登記表是乙個複雜的線性表 由若干資料項組成的資料元素稱為記錄 由多個記錄構成的線性表又稱為檔案 ...

資料結構與演算法 線性表

1.線性表 1.1 線性表的定義和基本運算 定義 線性表是具有相同資料型別的n個資料元素的有限序列。除表頭元素外,每個元素有且僅有乙個直接前驅 除表尾元素外,每個元素有且僅有乙個直接後繼。特點 個數有限 具有邏輯上的順序性 資料元素型別都相同。基本操作 初始化 求表長 按值查詢 按位查詢 插入 刪除...