各类资料学习下载合集
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