在迴圈鍊錶中,表中最後乙個節點的指標域不再為空,而是指向煉表頭節點,整個鍊錶形成乙個環。
帶頭節點的迴圈單鏈表和迴圈雙鏈表:
圖1-迴圈鍊錶
迴圈單鏈表:尾節點的next指標域不再為空,而是指向了頭結點。
迴圈雙鏈表:尾節點的next指標域同樣不再為空,而是指向了頭結點。另外,頭結點的prior指標不再為空,而是指向了尾節點。
要求:判斷帶頭節點的雙向迴圈鍊錶l是否對稱相等(即第乙個節點的值是否和最後乙個節點的值相等,第二個節點的值是否和倒數第二個節點的值相等),編寫出判斷的演算法。
演算法思路:
定義p和q兩個指標,p指向鍊錶第乙個節點,從左向右掃瞄;q指向鍊錶最後乙個節點,q從右向左掃瞄l;若對應資料節點的data域不相等,說明這不是乙個對稱鍊錶,則退出迴圈。否則就繼續比較,直到p與q相等或p的下乙個節點為*q為止,此時已經全部比較完畢,是對稱相等的。
**實現:
//判斷鍊錶是否對稱
int equeal(dlinklist *l)
else
//否則把q移動到上乙個節點
q=q->prior;
//同理,判斷p位置是否重合,說明已經比較完畢,直接退出迴圈
if (p==q)
//否則把p移動到下乙個節點
p=p->next;}}
return flags;
}
18 迴圈鍊錶
1,迴圈鍊錶的初始化 定義乙個頭結點和尾指標的方式,頭結點在這裡是用來連線 第乙個結點和最後乙個結點的結點 1 include2 include3 4 typedef struct link link 89 link head node 宣告乙個頭結點 10 link ptail 宣告乙個尾指標 1...
迴圈鍊錶,雙向鍊錶
迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...
鍊錶之迴圈鍊錶
單向鍊錶 鍊錶之單向鍊錶 迴圈鍊錶是單向鍊錶的變化形式。單向鍊錶的尾部的指標域是空的,而迴圈鍊錶的尾部指標是指向鍊錶的頭結點的,其結構如圖一所示。圖 一循 環鏈表結 構圖一 迴圈鍊錶結構 圖一迴圈鍊錶 結構從上面結構可以看出,迴圈鍊錶的節點形成了乙個圈。在進行遍歷時,可以從任意節點開始。如果記錄了尾...