記錄自己學習之靜態鍊錶

2021-09-13 02:17:23 字數 1082 閱讀 8162

最近在看關於資料結構的書籍,想寫下來跟大家一起學習,一起進步。

這一章是關於靜態鍊錶,靜態鍊錶是由陣列來描述指標,代替單鏈表的一種結構,陣列中的元素由兩個資料域組成,乙個是data用於存放資料元素,乙個是cur用於存放游標,相當於單鏈表中的next指標,存在該元素後面元素的指標。

以下是線性表的靜態鍊錶儲存的結構, 分別定義了乙個結構體,結構體指標,以及陣列型別。

#define maxsize 100

typedef struct

t_slink, *pt_slink, t_staticlinklist[maxsize];

一般來說,靜態鍊錶的第乙個元素和最後乙個元素作為特殊元素處理,不存放資料,陣列的第乙個元素用於存放備用節點的第乙個結點下標(就是沒存放資料沒被使用的節點),而陣列的最後乙個元素用於存放第乙個有數值元素的下標,相當於單鏈表中的頭結點作用。因而初始化的時候需要將第乙個元素指向後來空的元素,而最後乙個元素指向第乙個元素(0)。

int initstaticlist(pt_slink pstaticlist)

當然這是靜態鍊錶,我們也要像動態鍊錶一樣需要借助malloc和free這兩個兄弟,那我們就要自己實現它們。

int malloc(pt_slink pstaticlist)

int insertlistnode(pt_slink pstaticlist, int ilocation, int e)

return -1;

}int free(pt_slink pstaticlist, int k)

int deletelistnode(pt_slink pstaticlist, int ilocation)

最後寫乙個getlistlength函式,這個函式主要用於返回這個靜態鍊錶的長度

int getlistlength(pt_slink pstaticlist)

return j;

}其實靜態鍊錶理解起來並不難,就是單鏈表和順序表的結合,通過可以不移動陣列的元素就能實現增減元素,靜態鍊錶主要理解兩個特殊元素的關係和走向,相信靜態鍊錶對於大家也是不難的,其實博主在學這個的時候也花了挺多的時間去理解,可能本人比較笨的原因吧,所以才要好好的學習,寫寫部落格記錄一下。

記錄自己學習資料結構的歷程(1)靜態鍊錶

最近在看 大話資料結構 但裡面還是有的東西沒有弄懂,就是靜態鍊錶這裡,感覺有一些難理解,但也嘗試著自己敲了敲 不知道為啥敲了這麼多行 但好在測試的資料都通過了?include include include using namespace std define maxsize 9 typedef i...

鍊錶學習 靜態鍊錶

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

鍊錶變形之靜態鍊錶

為什麼要引入靜態鍊錶 因為對於有些問題來說 比如說今天的問題 結點的位址是比較小的整數 五位以內 我們呢就沒有必要去建立動態鍊錶,反而用簡單方便得多的靜態鍊錶來取而代之。特點 盡量不要把結構體型別名和結構體變數名取相同的名字 這應該是常識 來看題 傳送門 include define maxn 10...