資料結構學習筆記 靜態鍊錶(C語言實現)

2021-08-15 11:10:52 字數 1074 閱讀 9471

靜態鍊錶主要是為一些沒有指標的高階開發語言而提供的。實現思路就是:建立乙個陣列,陣列中的元素由兩個屬性組成,資料(data)、指標(cur)。指標指向下乙個陣列元素的下標。陣列的第乙個元素和最後乙個元素不存放資料。陣列之內除第乙個陣列元素,其餘的陣列空元素都被稱為備用鍊錶。陣列的第乙個元素的cur存放第乙個備用鍊錶的下標,陣列的最後乙個元素的cur存放第乙個帶有資料的陣列元素的下標。在沒有資料的陣列中,最後乙個陣列元素的cur是0.

靜態鍊錶實現方法:

init()方法:讓陣列中元素的cur分別指向下乙個陣列元素。最後乙個陣列中的元素的cur指向0

(因為是空鍊錶)。

setdata()方法:讓陣列中的第乙個元素的cur存放第乙個備用鍊錶的下標,讓陣列中含有資料的

最後乙個元素的cur存放0。

getbtcur()方法:返回第乙個備用鍊錶的下標,並讓陣列中第乙個元素的cur存放下乙個備用鏈

表的下標。

insertele()方法:通過getbtcur()方法拿到備胎的下標,將資料存入該下標所代表的陣列元

素,定義乙個變數用來存放數

組最後乙個元素的下標,迴圈,通過最後的這個元素的cur(也就是指標

)來找到要插入的地點的下標

,將這個下標位置的資料元素

的cur賦給備胎的cur,再把備胎的下標賦

給這個資料元素的cur。

freenode()方法:將要刪除的陣列元素釋放掉(就是將要刪除的陣列元素的cur指向陣列第乙個元

素的cur),變成備用鍊錶,

並讓陣列的第乙個元素指向他。

deleteele()方法:通過迴圈找到要刪除的元素的前乙個位置元素,讓他直接指向要刪除的元素的下

乙個元素,並通過freenode

方法將要刪除的元素變成備用鍊錶。

#include #include #define maxlength 100

typedef structcomponent;

typedef component staticlist[maxlength];

void init(staticlist arr){

int i=0;

for(i=0;i

資料結構學習筆記 鍊錶

表示式的計算 表示式的計算涉及到棧的操作 對於表示式 a b c d e f 演算法 用到兩個棧,分別是符號棧和運算元棧。輸入表示式時,為了表示表示式輸入完畢,在表示式的最後加上 號,也就是說輸入的表示式為 a b c d e f 首先設定各個符號的優先順序,和 的優先順序為0,也就是最低的 和 的...

資料結構學習筆記 鍊錶

2.建立鍊錶 3.單向和雙向迴圈鍊錶 4.總結 struct list node 首先了解鍊錶的組成部分 說明 頭節點 在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點 首節點 的位址。頭結點的作用是使所有鍊錶 包括空表 的頭...

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

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