線性表 3靜態鍊錶

2021-10-02 05:44:45 字數 2996 閱讀 6840

通過上面的學習我們知道,靜態鍊錶儲存資料元素也需要自定義資料型別,至少需要包含以下 2 部分資訊:

#include

#define maxsize 7

typedef

struct

component;

//將結構體陣列中所有分量鏈結到備用鍊錶中

void

reservearr

(component *array)

;//初始化靜態鍊錶

intinitarr

(component *array)

;//向鍊錶中插入資料,body表示鍊錶的頭結點在陣列中的位置,add表示插入元素的位置,a表示要插入的資料

void

insertarr

(component * array,

int body,

int add,

char a)

;//刪除鍊錶中含有字元a的結點

void

deletarr

(component * array,

int body,

char a)

;//查詢儲存有字元elem的結點在陣列的位置

intselectelem

(component * array,

int body,

char elem)

;//將鍊錶中的字元oldelem改為newelem

void

amendelem

(component * array,

int body,

char oldelem,

char newelem)

;//輸出函式

void

displayarr

(component * array,

int body)

;//從備用鍊錶中摘除空閒節點的實現函式

intmallocarr

(component * array)

;//將摘除下來的節點鏈結到備用鍊錶上

void

freearr

(component * array,

int k)

;//建立備用鍊錶

void

reservearr

(component *array)

array[maxsize-1]

.cur=0;

//鍊錶最後乙個結點的游標值為0

}//初始化靜態鍊錶

intinitarr

(component *array)

array[tempbody]

.cur=0;

//新的鍊錶最後乙個結點的指標設定為0

return body;

}void

insertarr

(component * array,

int body,

int add,

char a)

int insert=

mallocarr

(array)

; array[insert]

.cur=array[tempbody]

.cur;

array[insert]

.data=a;

array[tempbody]

.cur=insert;

}void

deletarr

(component * array,

int body,

char a)

}//執行到此,證明有該結點

int del=tempbody;

tempbody=body;

//找到該結點的上乙個結點,做刪除操作

while

(array[tempbody]

.cur!=del)

//將被刪除結點的游標直接給被刪除結點的上乙個結點

array[tempbody]

.cur=array[del]

.cur;

freearr

(array, del);}

intselectelem

(component * array,

int body,

char elem)

tempbody=array[tempbody]

.cur;

}return-1

;//返回-1,表示在鍊錶中沒有找到該元素

}void

amendelem

(component * array,

int body,

char oldelem,

char newelem)

array[add]

.data=newelem;

}void

displayarr

(component * array,

int body)

printf

("%c,%d\n"

,array[tempbody]

.data,array[tempbody]

.cur);}

//提取分配空間

intmallocarr

(component * array)

return i;

}//將摘除下來的節點鏈結到備用鍊錶上

線性表(3) 靜態鍊錶

靜態鍊錶 1.利用連續的靜態儲存空間模擬實現鍊錶的操作 2.建立資料鏈表,利用游標作為指標,指向下一元素儲存位置,l max 1 cur為頭指標,指向第乙個資料元素 3.建立空閒結點鍊錶,利用游標作為指標,指向下一空閒結點位置,l 0 cur為頭指標,指向第乙個空閒結點所在位置 4.l 0 data...

線性表 靜態鍊錶

靜態鍊錶的優缺點 優點 1 在插入和刪除操作時,只需要改變游標cur,不需要移動元素,從而改進了在順序儲存結構中的插入和刪除中需要移動大量元素的缺點 缺點 1 沒有解決連續儲存分配帶來的表長難以確定的問題 2 失去了順序儲存結構隨機訪問的特性 includeusing namespace std d...

線性表 靜態鍊錶

靜態鍊錶,是通過游標來記錄下乙個節點的位置,約定第乙個游標指向備用列表的頭,最後乙個游標指向靜態鍊錶的頭,比如 函式宣告 status static list init static list space status search bp positon static list space stat...