題目源於九度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...