C语言实现链表之单向链表(六)删除头结点
2015-11-08 21:08
337 查看
C语言实现链表之单向链表(六)删除头结点
上一篇文章给出了在头结点之前插入结点的函数,本篇文章将给出删除头结点的函数。/*============================================================================== * 操作 :删除头结点 * 操作前:ppHeadNode为链表的头指针的二级指针 * 操作后:(*ppHeadNode)指向新的头结点,原头结点被删除,所占内存被释放, * 如果链表中只有头结点,则将(*ppHeadNode)置为NULL,操作成功返 * 回TRUE,操作失败返回FALSE ==============================================================================*/ C_Bool DeletFirstNode(MyListNode** ppHeadNode) { MyListNode* pListNodeTmp = NULL; // 判断是否有链表输入 if((*ppHeadNode) == NULL) { fprintf(stderr, "There is no list.\n"); return FALSE; } if((*ppHeadNode)->pNextNodeAddr != NULL) { // 更新头结点 pListNodeTmp = (*ppHeadNode)->pNextNodeAddr; free((*ppHeadNode)); (*ppHeadNode) = pListNodeTmp; } else { // 原来的链表中只有头结点,释放后剩下空表 free((*ppHeadNode)); (*ppHeadNode) = NULL; } return TRUE; }
强调几点:
(1)一定要传入二级指针,否则无法改变指针地址值;
(2)头结点删除后要记得更新头结点;
(3)这个函数采用了我们自己定义的布尔变量;
(4)该函数依旧进行了错误处理。
相关文章推荐
- 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统计文本文件字符数
- 在C语言中转换时间的基本方法介绍
- C语言进制转换代码分享