广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >嵌入式C语言二级指针在链表中的应用
  • 366
分享到

嵌入式C语言二级指针在链表中的应用

2024-04-02 19:04:59 366人浏览 泡泡鱼
摘要

重读了两本书:Stephen A.Maguire的《编程精粹:Microsoft编写优质无错C程序秘诀》和David R. Hanson的《C语言接口与实现:创建可重用软件的技术》。

重读了两本书:Stephen A.Maguire的《编程精粹:Microsoft编写优质无错C程序秘诀》和David R. Hanson的《C语言接口与实现:创建可重用软件的技术》。两本书都有对链表的操作。

假设有如图所示的链表,链表节点的pb成员指向一个缓冲块,删除节点函数根据缓冲块的首地址,找到节点并删除节点:

链表举例

《编程精粹》使用一个变量pbiPrev来保存前一个节点位置,并且要处理删除的是第一个节点A这种边界条件:

void FreeBlockInfo(byte *pbToFree)
{
	blockinfo *pbi, *pbiPrev;
    pbiPrev = NULL;
	for(pbi = pbiHead; pbi != NULL; pbi = pbi->pbiNext)
	{
		if(fPtrEqual(pbi->pb, pbToFree)
		{
			if(pbiPrev == NULL)
				pbiHead = pbi->pbiHead;
			else
				pbiPrev->pbiNext = pbi->pbiNext;
			break;
		}
		pbiPrev = pbi;
	}
	
	ASSERT(pbi != NULL);
	
	memset(pbi, bGarbage, sizeof(blockinfo));
	free(pbi);
}

《C语言接口与实现》使用了二级指针,可以很巧妙的省掉变量pbiPrev以及边界判断:

void FreeBlockInfo(byte *pbToFree)
{
    blockinfo **ppbi, *pbiFind;
    pbiFind = NULL;
    for(ppbi = &pbiHead; *ppbi != NULL; ppbi = &(*ppbi)->pbiNext)
    {
        if(fPtrEqual((*ppbi)->pb, pbToFree)
		{
            pbiFind = *ppbi;
            *ppbi = (*ppbi)->pbiNext;
            break;
        }
    }
    
	ASSERT(pbiFind != NULL);
	
	memset(pbiFind, bGarbage, sizeof(blockinfo));
	free(pbiFind);
}

以上就是嵌入式C语言二级指针在链表中的应用的详细内容,更多关于嵌入式C语言二级指针链表的资料请关注编程网其它相关文章!

--结束END--

本文标题: 嵌入式C语言二级指针在链表中的应用

本文链接: https://www.lsjlt.com/news/145560.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 嵌入式C语言二级指针在链表中的应用
    重读了两本书:Stephen A.Maguire的《编程精粹:Microsoft编写优质无错C程序秘诀》和David R. Hanson的《C语言接口与实现:创建可重用软件的技术》。...
    99+
    2022-11-13
  • C语言中二级指针与链表怎么应用
    本文小编为大家详细介绍“C语言中二级指针与链表怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言中二级指针与链表怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。二级指针讲解简述:其实就是一个指针...
    99+
    2023-07-02
  • 详解C语言中二级指针与链表的应用
    目录前言二级指针讲解链表的应用 定义双链表的结构体创建双链表前言 这篇文章即将解决你看不懂或者不会写链表的基本操作的问题,对于初学者而言,有很多地方肯定是费解的。比如函数的...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作