1 定义二叉搜索树 首先,我们定义二叉树的节点如下: typedef struct BTNode { int value; struct BTNode *left; struct BTNode *right; }...
C 基础知识,尤其是指针和结构的知识,在用 C 实现一些常见数据结构和算法时至关重要。 1 关于ELF文件在Linux上编译C得到的目标文件和可执行文件都是ELF格式。可执行文件分为段,目标文件分为部分。一个段包含一个或多个节,通过read...
字数超出限制了...
二叉堆是一个数组对象,可以认为是一棵完全二叉树。树中的每个节点与存储该节点值的数组中的元素相匹配。除最后一层外,树中的每个级别都已填充。二叉堆可以用来实现堆排序、优先级队列等,本文的代码url在这里。 ? HEAP_SIZE(A)表示A中堆...
作为一种基本的数据结构,栈的应用场合很多,比如函数递归、前后缀表达式的转换等。本文使用C数组来实现栈结构(使用链表实现可以参考链表章节,使用主插入构建链表)并分析几个常见的栈相关面试题。本文的代码可以在这里找到。 1 堆栈定义 我们使用结构...
假设给你20亿个非负int型整数,然后给你一个非负int型整数t,然后让你决定是否这里存在 20 亿人中你会做什么。 有人可以使用 int 数组,在其中存储 20 亿个数字,然后循环遍历它。 想一下,这种情况下时间复杂度是O(n),需要的内...
最短路径的定义是什么? 最短路径是权重最小的路径p; 路径定义:p=,其中当时,有(,)E; 路径权重:w(p)=; 加上权重的数学表示边权重图:G(V,E,W),W是作用在边上生成实数的函数,即从W(E)开始的路径->R顶点到自身...
希尔分类希尔分类是希尔(Donald Shell)提出的一种分类方法,也属于分类,但也是简单排序的有效版本。称为折扣排序。基本思想是逐步收集待排序的项,然后在组内进行输入排序。随着增量的减小,每个组组中的元素越来越多,直到增量减小到1,所有...
本文主要受到宋劲松老师写的《Linux C编程》递归章节的启发。最能体现算法本质的算法就是递归。希望这篇文章对刚刚接触递归或者对递归感到困惑的朋友有所帮助。如有错误,还请各人生言专家指正。二叉树的递归示例代码请参见仓库的binary_tre...