C语言实现链表之双向链表(四)清空链表
来源:互联网 发布:windows10怎么下载软件 编辑:程序博客网 时间:2024/06/06 02:50
C语言实现链表之双向链表(四)清空链表
上一篇文章给出了创建链表的函数,本篇文章将给出清空链表的函数,程序如下。
/*============================================================================== * 操作 :清空链表,释放结点内存,将链表重置为空表* 操作前:ppHeadNode为链表头指针的二级指针* 操作后:(*ppHeadNode)所指链表中的所有结点的内存被释放,重置为空表==============================================================================*/void ClearMyList(MyListNode** ppHeadNode){ MyListNode* pListNodeTmp = NULL; if((*ppHeadNode) == NULL) { printf("The list is empty, no need to clear.\n"); return; } // 循环释放链表中的结点所占内存,清空结束后 while((*ppHeadNode)->pNextNodeAddr != NULL) { pListNodeTmp = (*ppHeadNode)->pNextNodeAddr; free((*ppHeadNode)); (*ppHeadNode) = pListNodeTmp; } // 清除最后一个结点 if((*ppHeadNode) != NULL) { free((*ppHeadNode)); (*ppHeadNode) = NULL; } printf("The list is cleared.\n");}
强调几点:
(1)函数一定要传入二级指针,否则无法改变指针的地址值,即无法删除指针;
(2)注意不要漏掉最后一个结点;
(3)这个函数也进行了错误判断和处理;
(4)这个函数也可以通过调用删除结点的函数来进行实现,不过这是最基本的实现方法,供大家参考。
1 0
- C语言实现链表之双向链表(四)清空链表
- 数据结构之双向链表(C语言实现)
- (续)线性表之双向链表(C语言实现)
- 数据结构之---c语言实现双向链表操作
- 双向链表代码实现-C语言
- 双向链表C语言实现
- C语言实现双向链表[上]
- C语言实现双向链表
- c语言双向链表的实现
- C语言实现双向循环链表
- C语言实现双向链表
- 双向链表的C语言实现
- C语言实现双向循环链表
- 【C语言】双向链表的实现
- C语言实现双向循环链表
- C语言实现双向循环链表
- C语言实现双向链表
- c语言:双向链表的实现
- FileInputStream
- HTML DOM 快速导览 – 元素对象 《img》 (HTMLImageElement)
- 【计算机网络】:关于wireshark抓包实验的思考
- struts2的一些配置----转载自微博Messiiiii(感谢该作者)
- '\r' 与 '\n'的区别
- C语言实现链表之双向链表(四)清空链表
- Please ensure that adb is correctly located at……问题解决方案
- JavaScript 数据结构(5):单链表 LinkList
- Race
- Android 输入系统之InputDispatcher2ViewRootImpl篇----终
- 视频马赛克的实时检测
- 多线程问题
- Context Switches上下文切换性能详解
- CUDA 的 Threading:Block 和 Grid 的設定與 Warp