用陣列描述的鍊錶叫做靜態鍊錶
靜態鍊錶 陣列的兩個元素都是由資料域組成的,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 使用鍊錶結構可以克服陣列鍊錶需要預先知道資料大小的缺點,鍊錶結構可以充分利用計算機記憶...