迴圈鍊錶的建立及可控輸出

2021-08-28 11:31:06 字數 1345 閱讀 1550

上篇我們講了運用頭插法尾插法建立單鏈表的方法,和兩種方法的比較。 接著我們學習迴圈鍊錶的建立。

只要學會了單鏈表的建立,迴圈鍊錶的建立就變得很簡單。

迴圈鍊錶建立

單鏈表的結構:

迴圈鍊錶:

所謂迴圈鍊錶,就是將單鏈表的尾結點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) 

}

這樣我們就完成了迴圈鍊錶的建立以及控制輸出。

關於可控大小的雙向迴圈鍊錶

本人現從事linux嵌入式軟體開發工作,入職剛剛1年,是個菜鳥。最近在工作中遇到了這樣乙個問題 乙個伺服器程式接收來自客戶端的gps資料報,伺服器解析資料報後,將資料儲存到鍊錶中,供給其他介面使用。我在這裡使用的鍊錶為linux核心中使用的鍊錶,即list.h。大家知道,這個鍊錶非常好用,而且基本上...

雙向迴圈鍊錶的建立及操作

專案名稱 雙向迴圈鍊錶的建立與基本操作 編譯環境 vc 2008 作者相關 最後修改 2019.6.19 學習目標 判空 求長 獲取元素位置 返回某個位置的元素 插入元素 刪除元素 清空鍊錶 銷毀鍊錶 注意事項 1.測試所有功能是否正常 include include define ok 1 def...

迴圈鍊錶的建立

迴圈鍊錶的建立以及基本操作 上篇我們講了運用頭插法和尾插法建立單鏈表的方法,和兩種方法的比較。接著我們學習迴圈鍊錶的建立。只要學會了單鏈表的建立,迴圈鍊錶的建立就變得很簡單。迴圈鍊錶建立 單鏈表的結構 迴圈鍊錶 所謂迴圈鍊錶,就是將單鏈表的尾結點 end 的指標域 也就是 end next 指向頭結...