帶頭結點的鍊錶的位址問題

2021-07-23 14:30:48 字數 542 閱讀 5446

題目源於九度oj,倒序輸出乙個鍊錶每個結點的資料。

在建立鍊錶的時候,建立的是帶有頭結點的雙向鍊錶。

typedef

struct lnode lnode;

lnode *p, *q;

q = (lnode*)malloc(sizeof(lnode));

p = q;

p->next = null;

p->prior = null;

這時候q指標儲存了乙個隨機的位址變數,頭結點一般不儲存任何的資料,所以這個頭結點的data就是乙個隨機的位址變數。

在q一直malloc位址空間的時候,p指標也在跟著next往後走,直到不輸入資料為止,此時去p,q重合。

若要反向輸入鍊錶每個節點的資料,這只需p指標沿著prior往回走。

while (p->prior)
while條件裡是p->prior是因為不儲存設定資料的節點之前還有個儲存隨機資料的結點,即頭結點,頭結點的prior才是null

帶頭結點迴圈鍊錶

上乙個說的是單鏈表,其實迴圈鍊錶跟單鏈表類似,單鏈表最後乙個節點 p 的next域為null即p next null而迴圈鍊錶 plist 的則為頭結點的位址,即p next plist。其餘的基本操作和單鏈表幾乎一樣,僅僅是單鏈表迴圈結束條件為 null,而迴圈鍊錶是 plist。基本操作為 初始...

迴圈鍊錶的建立 帶頭結點

1.迴圈鍊錶與單鏈表的區別 1 初始化的時候,頭結點的next指向它自己 2 判斷條件上,由p null更換為p l 3 更新尾結點的時候,要由null改為 l 專案名稱 迴圈鍊錶的建立與基本操作 編譯環境 vc 2008 作者相關 最後修改 2019.5.31 學習目標 1.掌握迴圈鍊錶的基本操作...

帶頭結點的鍊錶的逆置

不需要申請新的記憶體,在原有的鍊錶的基礎上實現逆置鍊錶 include include include typedef struct linklinklist linklist setlist 初始化鍊錶 void initlist linklist 初始化鍊錶,給鍊錶賦值 void show li...