- 博客(75)
- 收藏
- 关注
原创 数据结构篇--优先级队列排序--实验报告
本实验比较了基于二叉堆和二项队列的优先队列排序算法的性能。实验通过随机生成的整数键值,测试了不同数据规模($10^3$ 到 $10^6$)下的排序时间。结果显示,二叉堆在所有数据规模下均表现出更快的执行时间,尤其是在大规模数据($10^5$ 和 $10^6$)时,二叉堆的时间约为二项队列的一半。原因在于二叉堆的数组实现提供了更好的缓存局部性,而二项队列的复杂指针操作和动态内存分配增加了指令开销。实验总结表明,二叉堆在实际应用中因其简洁性和高效性,通常是更优的选择,而二项队列在特定场景下可能表现更佳。
2025-05-21 15:29:01
1033
原创 算法C实现习题集--习题9.58
Exercise 9.58 要求在一个初始为空的二项队列上执行一系列插入和删除最大键操作,并生成相应的二项队列序列。操作序列为 P R I O * R * * I * T * Y * * * Q U E * * * U * E,其中字母表示插入操作,* 表示删除最大键操作。代码实现了二项队列的初始化、插入、删除最大键等操作,并通过测试用例验证了这些操作的正确性。测试用例逐步插入字符并删除最大键,确保二项队列的结构和内容符合预期。最终,代码通过断言验证了每一步操作后的二项队列状态,确保其正确性。
2025-05-21 09:23:27
156
原创 C语言编程-链表操作-逆序
该文章介绍了如何反转一个单链表。通过使用三个指针 r、y 和 t,分别记录已逆序的部分、正在处理的部分和未处理的部分,逐步将链表节点逆序连接。具体实现中,y 指针遍历链表,t 指针保存下一个节点,y->next 指向 r 完成逆序操作,最后返回逆序后的链表头指针 r。该方法时间复杂度为 O(n),空间复杂度为 O(1),是一种高效的反转链表实现方式。
2025-05-15 04:20:41
218
原创 C语言编程--二叉树--构建解析树
本文介绍了如何通过构建和操作解析树来处理前缀表达式。首先,通过递归方法构建解析树,然后通过中序遍历生成中缀表达式,后序遍历生成后缀表达式,并进一步生成求值机器码。代码框架包括解析树的构建、遍历函数以及生成机器码的函数。具体实现中,parse函数用于构建解析树,trav_in和trav_post函数分别用于中序和后序遍历,visit_codegen函数用于生成机器码。通过这些步骤,可以有效地将前缀表达式转换为中缀、后缀表达式以及机器码。
2025-05-13 11:07:58
306
原创 离散数学问题集--问题4.23
断言b不蕴含满射(性质1)和空关系,因为存在反例,比如,假设。断言b不蕴含全关系(性质4),因为存在反例,比如,假设。断言b不蕴含单射(性质2),因为存在反例,比如,假设。断言b不蕴含函数(性质3),因为存在反例,比如,假设。断言h不一定蕴含全关系,因为存在反例,比如,假设。断言h不一定蕴含满射,因为存在反例,比如,假设。断言h不一定蕴含单射,因为存在反例,比如,假设。断言h不一定蕴含函数,因为存在反例,比如,假设。断言l不一定蕴含全关系,因为存在反例,比如。断言l不一定蕴含单射,因为存在反例,比如。
2025-03-27 07:11:04
845
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人