各類資料學習下載合集
?https://pan.quark.cn/s/8c91ccb5a474?
經過前面的學習,我們已經從零構建了一個功能強大的通用鏈表,它能自如地進行節點的插入和刪除。我們的“數據火車”已經可以馳騁在內存的世界里。然而,旅途終有終點,當火車完成任務后,如何安全、徹底地讓它“退役”并回收所有資源,是衡量一個程序是否健壯的最后一道,也是最重要的一道關卡。
今天,我們將上演我們鏈表系列的“壓軸大戲”——資源管理。我們將實現三個至關重要的“善后”功能:
- ?
?getSize_LinkList?
?:安全地獲取鏈表當前的長度。 - ?
?clear_LinkList?
?:清空鏈表中的所有節點,但保留鏈表結構本身,使其可以被重用。 - ?
?destroy_LinkList?
?:徹底銷毀鏈表,釋放其占用的所有內存。
一、 安全的“瞭望塔”:獲取鏈表長度 ??getSize_LinkList?
?
我們在設計之初就強調了信息隱藏的重要性。用戶不能直接像 ??myList->size = 100?
? 這樣修改內部狀態。但他們應該有權利讀取這些狀態。??getSize_LinkList?
? 就是我們為用戶開設的一個安全的“只讀窗口”。
它的實現非常簡單,但體現了我們封裝設計的核心思想。
1. 接口設計 (??LinkList.h?
?)
// LinkList.h (之前已定義,這里重申)
int getSize_LinkList(LinkList list);
2. 功能實現 (??LinkList.c?
?)
// LinkList.c (之前已定義,這里重申)
int getSize_LinkList(LinkList list_handle) {if (list_handle == NULL) {return -1; // 或 0,取決于錯誤處理策略}// 將 void* 句柄“翻譯”回我們內部的結構體指針s_LinkList* list = (s_LinkList*)list_handle;return li