靜態鍊錶實現(C語言)

2021-10-09 03:36:57 字數 3242 閱讀 3425

對於線性鍊錶,也可用一維陣列來進行描述。這種描述方法便於在沒有指標型別的高階程式語言中使用鍊錶結構。

先上**

#include

#define maxsize 7

typedef

struct

slinklist[maxsize]

;//初始化靜態鍊錶

void

list_init

(slinklist list)

;//插入資料

intlist_insert

(slinklist list)

;//獲取靜態鍊錶的長度

intlist_size

(slinklist list)

;//分配鍊錶空間

intlist_molloc

(slinklist list)

;//輸出函式

void

displayarr

(slinklist list)

;//釋放鍊錶的某個空間

void

list_free

(slinklist list,

int i)

;//刪除鍊錶的某個空間

intlist_delete

(slinklist list,

int k)

;//查詢鍊錶中第i個元素

intlist_get

(slinklist list,

int i)

;//修改第i個元素的值

intlist_change

(slinklist list,

int data,

int i)

;int

main

(void

)//初始化靜態鍊錶(初始化靜態鍊錶)

void

list_init

(slinklist list)

list[i]

.cur =0;

list[i]

.data =

null;}

//插入資料 data:要插入的資料 pos:資料要插入的位置,從0開始

intlist_insert

(slinklist list,

int data,

int pos)

list[i]

.data = data;

int insertflag =0;

//如果pos位置非法,則直接插入資料

if(pos <

0|| pos>maxsize -

2|| pos > size -1)

//位置pos在正常範圍,則修改游標

int tempcur =1;

int j;

for(j =

0; j < pos -

1; j++

) tempcur = list[tempcur]

.cur;}if

(size)

else

//上乙個元素的游標指向新分配的空間

list[tempcur]

.cur = i;

}else

return1;

}//獲取靜態鍊錶的長度

intlist_size

(slinklist list)

return length;

}//分配鍊錶空間

intlist_molloc

(slinklist list)

return-1

;}//輸出鍊錶

void

displayarr

(slinklist list)

while

(list[cur]

.cur)

}//釋放鍊錶的某個空間,i是要釋放空間的索引

void

list_free

(slinklist list,

int i)

//刪除鍊錶的第k個元素,k從0開始,返回刪除的元素的值

intlist_delete

(slinklist list,

int k)

//將鍊錶的data設定為null

int deletecur =

list_get

(list, k)

; returndata = list[deletecur]

.data;

list[deletecur]

.data =

null

;//如果刪除的是首元素

if(k ==0)

else

}//刪除的不是首元素

else

return returndata;

}//查詢鍊錶中第i個元素的位置,i從0開始

intlist_get

(slinklist list,

int i)

}return getcur;

}//修改第i個元素的值,返回修改前的值

備用鍊錶:是一些未使用的空間和被刪除的空間所組成的一條鍊錶

list的第二個元素為靜態鍊錶的首元素,靜態鍊錶的最後乙個元素游標cur指向0,代表結尾

插入資料時,修改備用鍊錶的cur指向,和靜態鍊錶的前後指向

只有乙個元素時,刪除元素只需要將備用鍊錶指向第乙個元素,並且釋放元素的空間,使原來有資料的空間的cur歸屬到備用鍊錶中

因為靜態鍊錶首元素比較特殊,如果如果不是只有乙個元素,刪除首元素時需要將第二個元素,移動到list[1]的位置

刪除非首元素時,需要將刪除元素的前後兩個元素對接,並修改備用鍊錶的指向

C 實現靜態鍊錶

cpp view plain copy include using namespace std const size t maxsize 100 typedef struct slistnode staticlist maxsize 初始化鍊錶函式 void initslist staticlist...

C 實現 靜態鍊錶

include include using namespace std define listmax 100 測試結構 struct person 建立靜態鍊錶初始結構 struct linklist 初始化鍊錶 linklist init list linklist list list listm...

靜態鍊錶 C語言描述

靜態鍊錶 1.下標為0的游標存放最後存放資料節點的游標,即是第乙個沒有存放元素 備用鍊錶 的下標 2.最後乙個的節點存放第乙個由數值得下標 3.第乙個和最後乙個都不存放資料 即是備用鍊錶的第乙個的下標 4.最後乙個儲存資料的節點的游標為0 靜態鍊錶主要是根據游標來遍歷,以前沒有指標用的思想 假如我要...