迴圈鍊錶的建立以及基本操作
上篇我們講了運用頭插法和尾插法建立單鏈表的方法,和兩種方法的比較。 接著我們學習迴圈鍊錶的建立。
只要學會了單鏈表的建立,迴圈鍊錶的建立就變得很簡單。
迴圈鍊錶建立
單鏈表的結構:
迴圈鍊錶:
所謂迴圈鍊錶,就是將單鏈表的尾結點 end 的指標域 也就是 end->next 指向頭結點的位址 : end->next = head 。 這樣就完成了迴圈鍊錶的建立。
這就完了? 當然沒有那麼簡單了~~~
迴圈鍊錶不同於單鏈表,原因在於上篇我們講單鏈表的時候,尾結點指標域的指向永遠是 null,也就是 end->next = null。 因此判斷單鏈表結束的標誌,就是 while( node->next != null) ,但是迴圈鍊錶的尾結點指向的不是 null ,而是 頭結點 head。因此,我們判斷的標準也要改變。
思考過後,決定將頭結點的資料域賦值為 -1,這樣就有了乙個標誌,用來判斷是否將迴圈鍊錶執行完一次。
思而不學則殆,即刻上手!
linklist creat_list
(linklist head)
end->next = head;
// 將尾結點的指標指向頭結點
return head;
}
這就完成了迴圈鍊錶的建立,接下來我們要想辦法讓迴圈鍊錶按照我們預想來執行迴圈的次數。
思前想後,想出了這個函式來判斷乙個迴圈鍊錶內的結點數。
int
node_number
(linklist *head)
return count +1;
// 因為第一次執行迴圈之前,跳過了頭結點,因此得到的count 沒有算頭結點,返回的時候我們加上1
}
這樣我們便得到了迴圈鍊錶的結點個數。
只要有了結點個數,我們就可以根據我們的需求來執行輸出迴圈鍊錶所有結點的次數。
void
illustrate
(linklist head)
}
迴圈鍊錶的建立 帶頭結點
1.迴圈鍊錶與單鏈表的區別 1 初始化的時候,頭結點的next指向它自己 2 判斷條件上,由p null更換為p l 3 更新尾結點的時候,要由null改為 l 專案名稱 迴圈鍊錶的建立與基本操作 編譯環境 vc 2008 作者相關 最後修改 2019.5.31 學習目標 1.掌握迴圈鍊錶的基本操作...
C 建立單迴圈鍊錶
前幾天的培訓作業,讓我用c 語言來建立乙個單迴圈鍊錶,這個以前在講資料結構的時候有學過,不過那時候用的是c,其中用到的是指標,而在c 裡面沒有了指標,那在c 裡面要怎麼建立乙個單迴圈鍊錶呢?其實在建立乙個新的物件的時候,我們就可以把他理解為乙個指標,c 中並不是說不能用指標,而是將他封裝了起來,對使...
迴圈雙向鍊錶的建立方法 最簡單的迴圈雙向鍊錶
首先講迴圈鍊錶,簡單來說就是讓鍊錶首尾相連,形成乙個環,因為一般的鍊錶都是單向的,任意給出的乙個節點是不能訪問前面的鏈節,這就導致了單向鍊錶的侷限性,迴圈鍊錶從一定程度上來說就解決了這一問題,通過表頭指標的移動,因為環的特性,可以訪問完整個鍊錶 但是我們不禁會想,如果只是為了訪問已知鏈節的前乙個節點...