資料結構學習(三) 靜態鍊錶 使用c語言實現

2021-08-20 16:34:50 字數 1654 閱讀 9007

用陣列描述的鍊錶叫做靜態鍊錶

靜態鍊錶 陣列的兩個元素都是由資料域組成的,data和cur,陣列的每乙個下標對應乙個data和乙個cur。資料域data用來存放資料元素;游標cur相當於單鏈表裡的next指標,存放該元素的後繼在陣列的下標。

靜態鍊錶的初始化構建:

列表中插入資料:

**如下:

#include#include#define maxsize 1000//最大長度為1000

#define ok 1

#define error 0

typedef int elemtype;

typedef int status;

typedef struct component,staticlinklist[maxsize];

//將一堆陣列space中各分量鏈成一備用鍊錶

//space[0].cur為頭指標

status initlist(staticlinklist space)

//若備用空間鍊錶非空,則返回分配的節點下標,否則返回0

int malloc_sll(staticlinklist space)

//獲取靜態鍊錶的陣列長度

int listlength(staticlinklist l)

while (l[k].cur)//上標不為0 時

return j;

}//在第陣列l中第i個元素前插入

status listinsert(staticlinklist l, int i, elemtype e)

j = malloc_sll(l);//獲得空閒量下標

if (j)

l[j].cur = l[k].cur;//把第i個元素之前的cur賦值給他

l[k].cur = j;//把空閒量的下標賦值給第i個元素之前的元素的cur

return ok;

}}

靜態鍊錶中刪除元素:

**:

//刪除在l中的第i個元素

status listdelete(staticlinklist l, int i)

k = maxsize - 1;

for (j = 1; j <= i-1 ; j++)

j = l[k].cur;

l[k].cur = l[j].cur;

l[j].data = null;

free_ssl(l, k);

}//將下標為k的空閒節點 **到備用鍊錶

void free_ssl(staticlinklist space, int k)

比較:

資料結構學習實錄一 靜態鍊錶

首先我們來了解下靜態鍊錶,什麼是靜態鍊錶?我們知道,鍊錶是動態結構,通過指標將資料串聯起來,只要記憶體有空間就可以繼續分配鍊錶,沒有固定的長度限制,是一種非常好用儲存結構,而且從作業系統原理上來說,他可以利用記憶體的碎片化空間,並且更容易找到合適空間分配,減少作業系統對記憶體空閒區域的檢索時間,在一...

資料結構學習 鍊錶

將從下面4部分進行介紹 首先介紹鍊錶是什麼,然後介紹為什麼定義鍊錶,接著是鍊錶的分類,最後簡單介紹一下鍊錶結點的插入與刪除方法。首先,在介紹鍊錶之前,我們先介紹一下什麼是順序儲存結構。我們知道資料在計算機中的儲存就像貨物在倉庫中的儲存一樣,不但占用一定的空間,還要有乙個標示儲存位置的位址。計算機通過...

資料結構學習 鍊錶

由於不必須按順序儲存,鍊錶在插入的時候可以達到o 1 的複雜度,比另一種線性表順序表快得多,但是查詢乙個節點或者訪問特定編號的節點則需要o n 的時間,而線性表和順序表相應的時間複雜度分別是o logn 和o 1 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...