(二)靜態鍊錶

2021-08-08 13:15:12 字數 975 閱讀 7387

靜態鍊錶的思想是陣列代替指標,陣列的元素都是由兩個資料域組成,data和cur。陣列的每乙個下標都對應乙個data和乙個cur。cur相當於單鏈表的next指標,存放該元素的後繼在陣列中的下標。靜態鍊錶不一定用得著,或者很少用到,了解一下即可。

儲存定義

#define maxsize 1000

typedef int elemtype;

typedef struct component,staticlinklist[maxsize];

常用函式

//初始化

status initlist(staticlinklist space)

//把第i個元素之前元素的cur賦值給新元素的cur

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

//把新元素的下標賦值給第i個元素之前元素的cur

l[k].cur = j;

return ok;

}return error;

}//意思是把要刪除的元素變成第乙個空閒元素

void free_ssl(staticlinklist space,int k)

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

status listdelete(staticlinklist l,int i)

j = l[k].cur;

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

free_ssl(l,i);

return ok;

}

main函式

/**

* 靜態鍊錶

* 陣列第乙個和最後乙個元素不存資料,未被使用的陣列元素成為備用鍊錶。

* 下標為0的元素的cur就存放備用的第乙個節點的下標;陣列最後乙個元素的cur存放第乙個有數值元素的下標

* @return

*/int main()

鍊錶學習 靜態鍊錶

struct linknode 鍊錶在指定位置插入與刪除元素不需要移動元素,只需要修改指標即可,而陣列刪除與加入元素則需要移動後面的元素,鍊錶相對於陣列來講,則多了指標域空間開銷,拿到鍊錶第乙個節點就相當於拿到整個鍊錶 鍊錶的分類 靜態鍊錶,動態鍊錶 單向鍊錶,雙向鍊錶,迴圈鍊錶,單向迴圈鍊錶,雙向...

靜態鍊錶(陣列 鍊錶和靜態鍊錶的操作)

因為是線性表,不能只講鍊錶,所以今天提一下靜態鍊錶以及陣列 鍊錶 靜態鍊錶之間的對比。陣列基本結構沒得說,插入和刪除的操作也是有的 雖然看著不比較詭異 一般是動態分配乙個足夠長的,記錄有多少個元素後對這個個數進行加減,而不是每插入乙個就動態分配 其實這樣也行,要是不怕麻煩的話 另外在插入刪除操作之後...

靜態鍊錶和迴圈鍊錶

所謂靜態鍊錶,與指標型描述的鍊錶 動態鍊錶 的區別在於靜態鍊錶借用一維陣列來描述鍊錶.這種儲存型別需要預先分配乙個較大的空間.其結構如下圖 與動態鍊錶操作時最大的區別在於 靜態鍊錶需由使用者自己實現malloc和free函式.為了辨明陣列中哪些分量未被使用,解決的辦法是 將所有未被使用過的以及被刪除...