![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法和数据结构
两只鱼丿
学无止境
展开
-
双向链表:(难点解析)图
创建双向链表 建双向链表主要的三句: list->next = body; body->prior = list; list = list->next; 最后一句 list = list->next; 比较容易犯迷糊。 看图:原创 2021-08-24 18:35:25 · 128 阅读 · 0 评论 -
二叉树递归构建
二叉树的每个节点一般包含一个数据项,以及两个指向后续节点(左右节点)的指针,如果后续节点不存在,对应的指针就是NULL,节点还可以包含一个计数器,记录树中何时有重复的数据项。 将数据添加到二叉树中,如果该项已经存在二叉树中,就不创建新节点,而是把已有节点的计数器加1 。 将数据添加到二叉树中,需要比较添加的项和已有的项,一般情况,要求左节点的数据项小于当前节点数据项,右节点的数据项大于当前节点的数...原创 2019-11-25 10:00:12 · 465 阅读 · 0 评论 -
递归算法总结 - 召回
首先递归的一个通俗例子,知乎上看到的。 一个小朋友坐在第10排,他的作业本被小组长扔到了第1排,小朋友要拿回他的作业本,可以怎么办?他可以拍拍第9排小朋友,说“帮我拿第1排的本子”,而第9排的小朋友可以拍拍第8排小朋友,说“帮我拿第1排的本子”…如此下去,消息终于传到了第1排小朋友那里,于是他把本子递给第2排,第2排又递给第3排…终于,本子到手啦! 递归可以联想到数学归纳法和多米诺骨牌。 写递归函...原创 2019-11-04 20:03:49 · 125 阅读 · 0 评论 -
递归算法,斐波那契 和 汉诺塔
为了解决一些复杂的问题,需要使用递归策略。而递归在现实中很难找到直接的对应关系。 递归并不是一个在日常生活中出现的概念,所以使用递归会有点难,但是递归有时候真的很强大,完全值得花时间学习。 递归的定义是,将一个大问题分解成具有相同形式的小问题,相同形式是关键。子问题与初始问题的差别仅仅是范围上的不同。 将子问题分解成更小的子问题,直到这些问题达到足够简单,能够被立即解决的水平,才停止继续分解。 因...原创 2019-11-04 10:00:56 · 526 阅读 · 0 评论 -
理解递归核心,跳跃信任的重要性
用阶乘来分析递归,先贴出代码,代码很简单 #include <stdio.h> int fact(int n){ if(n == 0) return (1); else return (n*fact(n-1)); } int main (){ for(int i =1;i <6;i++){ int zh = fact(i); printf("阶乘:%d\...原创 2019-10-30 11:14:39 · 310 阅读 · 0 评论