順序表與鍊錶

2021-10-24 21:13:36 字數 2353 閱讀 9253

順序表

1.實現

/*順序表的實現*/

typedef

struct lnode *list;

struct lnode

; list ptrl;

2.建立空的順序表

/*建立空順序表*/

list buildlist()

3.查詢元素

/*查詢元素*/

intfind

(elementtype e,list ptrl)

4.插入元素

/*插入元素*/

void

insert

(elementtype e,

int i,list ptrl)

// 插入元素到第i個位置

5.刪除元素

/*刪除元素*/

void

delete

(int i,list ptrl)

// 刪除第i個位置的元素

鍊錶

1.實現

/*鍊錶的實現*/

typedef

struct lnode *list;

struct lnode

;list ptrl;

2.建立空鍊錶

// 建立空鍊錶(只有乙個頭空結點的鍊錶)

list buildlist()

3.表長

/*求表長*/

intlength

(list ptrl)

// 假設不帶頭結點

return length;

}

4.按序號查詢

/*按序號查詢*/

list findk

(int k,list ptrl)

// 假設不帶頭結點(查詢第k個結點)

if(i == k)

// 找到了

return pl;

else

return

null

;}

5.按值查詢

/*按值查詢*/

list findv

(elementtype e,list ptrl)

// 假設不帶頭結點

return pl;

// 沒找到就是null,找到就是對應結點

}

6.插入操作

/*插入操作*/

list insert

(int i,elementtype e,list ptrl)

// 假設不帶頭結點(插入到第i個位置)

pl =

findk

(i -

1,ptrl)

;// 查詢i - 1位置的結點

if(pl ==

null

)return

;// i - 1位置的結點不存在,不能插入

else

}

7.刪除操作

/*刪除操作*/

list delete

(int i,list ptrl)

// 假設不帶頭結點(刪除第i個結點)

pl =

findk

(i -

1,ptrl)

;// 查詢 i - 1位置的結點

if(pl ==

null

)return

null

;// i - 1位置的結點不存在

else

if(pl -> next ==

null

)return

null

;// i位置的結點不存在

else

}

【注意】定義乙個結構體不會分配空間,定義結構體變數才會分配空間。如果定義乙個結構體指標,只會給指標分配空間,需要通過指標來為結構體手動分配空間。因此如果只定義了結構體指標,需要手動分配空間。

順序表與鍊錶

單向鍊錶 雙向鍊錶 迴圈鍊錶 插入刪除過程要注意,初始指標應指向鍊錶尾節點 若當插入到頭前時,找不到前驅節點 當在更新尾節點時需要更新頭指標 鍊錶排序使用氣泡排序最為適合 資料結構 結構定義 結構操作 include include include include define malloc2 my...

順序表與鍊錶

它是n個具有相同特性的資料元素的有限序列。線性表是一種在實際中廣泛使用的資料結構,常見的線性表 順序表 鍊錶 棧 佇列 字串 邏輯上連續,物理上不一定連續 儲存方式 通常是陣列或者鏈式結構 順序表是用一段實體地址連續的儲存單元依次儲存資料元素的線性結構,一般情況下採用陣列儲存。在陣列上完成資料的增刪...

順序表與鍊錶( )

鍊錶連續的儲存空間儲存任意元素。12 345結構定義 1 size 9 2 length 5 3 data type include include typedef struct vector vector void init vector vector,int size void clear ve...