靜態鍊錶主要是為一些沒有指標的高階開發語言而提供的。實現思路就是:建立乙個陣列,陣列中的元素由兩個屬性組成,資料(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 首先了解鍊錶的組成部分 說明 頭節點 在單鏈表的第乙個結點之前附設乙個結點,它沒有直接前驅,稱之為頭結點,頭結點的資料域可以不儲存任何資訊,指標域指向第乙個節點 首節點 的位址。頭結點的作用是使所有鍊錶 包括空表 的頭...
資料結構學習實錄一 靜態鍊錶
首先我們來了解下靜態鍊錶,什麼是靜態鍊錶?我們知道,鍊錶是動態結構,通過指標將資料串聯起來,只要記憶體有空間就可以繼續分配鍊錶,沒有固定的長度限制,是一種非常好用儲存結構,而且從作業系統原理上來說,他可以利用記憶體的碎片化空間,並且更容易找到合適空間分配,減少作業系統對記憶體空閒區域的檢索時間,在一...