C语言实现链表之双向链表(四)清空链表
2015-11-24 17:13
387 查看
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)这个函数也可以通过调用删除结点的函数来进行实现,不过这是最基本的实现方法,供大家参考。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- 探讨C语言的那些小秘密之断言
- C语言实现BMP转换JPG的方法
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- C语言查找数组里数字重复次数的方法
- C语言泛型编程实例教程
- C语言中使用lex统计文本文件字符数