靜態鍊錶
單鏈表是一種動態鍊錶。
用陣列描述的鍊錶是靜態鍊錶。靜態鍊錶的儲存結構如下:
#define maxsize 1000
typedef int elemtype;
typedef struct
component,staticlinklist[maxsize];
下面的為一靜態鍊錶的例項;
注意:陣列下標為0的元素不存放任何資料且游標是指向第乙個沒有存放資料的元素的下標。下標為maxsize - 1,也不存放任何資料且游標是指向第乙個存放資料的元素的下標。其它的每乙個元素的游標都是存放它下乙個元素的下標位址,即其它每乙個元素的游標都是指向它下乙個元素。
上面例項有一錯誤,就是鍊錶最後乙個元素的游標為0,圖上對應的就是o元素的游標應該為0。
靜態鍊錶的初始化相當於初始化陣列,如下所示:
#define maxsize 1000
typedef int elemtype;
typedef struct
component,staticlinklist[maxsize];
int initlist(staticlinklist tan)
tan[maxsize - 1].cur = 0;
return 1;
}//靜態鍊錶此時為空的,所以初始化後,游標賦值情況與上面的有點不一致,但是不影響
靜態鍊錶的特性:
1)對陣列的第乙個和最後乙個元素做特殊處理,它們的data不存放資料。
2)未使用的陣列元素稱為備用鍊錶。
3)陣列的第乙個元素,即下標為0的那個元素的cur存放備用鍊錶的第乙個結點的下標;陣列的最後乙個元素,即下標為maxsize - 1 的cur則存放第乙個有資料的元素的下標,相當於單鏈表中的頭結點作用。
4)鍊錶的最後乙個元素(不一定是陣列的最後乙個元素),鍊錶最後乙個元素的cur一般存放0,表示它後面的結點為空了。
鍊錶學習 靜態鍊錶
struct linknode 鍊錶在指定位置插入與刪除元素不需要移動元素,只需要修改指標即可,而陣列刪除與加入元素則需要移動後面的元素,鍊錶相對於陣列來講,則多了指標域空間開銷,拿到鍊錶第乙個節點就相當於拿到整個鍊錶 鍊錶的分類 靜態鍊錶,動態鍊錶 單向鍊錶,雙向鍊錶,迴圈鍊錶,單向迴圈鍊錶,雙向...
靜態鍊錶(陣列 鍊錶和靜態鍊錶的操作)
因為是線性表,不能只講鍊錶,所以今天提一下靜態鍊錶以及陣列 鍊錶 靜態鍊錶之間的對比。陣列基本結構沒得說,插入和刪除的操作也是有的 雖然看著不比較詭異 一般是動態分配乙個足夠長的,記錄有多少個元素後對這個個數進行加減,而不是每插入乙個就動態分配 其實這樣也行,要是不怕麻煩的話 另外在插入刪除操作之後...
靜態鍊錶和迴圈鍊錶
所謂靜態鍊錶,與指標型描述的鍊錶 動態鍊錶 的區別在於靜態鍊錶借用一維陣列來描述鍊錶.這種儲存型別需要預先分配乙個較大的空間.其結構如下圖 與動態鍊錶操作時最大的區別在於 靜態鍊錶需由使用者自己實現malloc和free函式.為了辨明陣列中哪些分量未被使用,解決的辦法是 將所有未被使用過的以及被刪除...