第四章-平衡二叉树

我们为了解决二叉树的查找,我们构建出了二叉搜索树(左子树小于其父结点,右子树大于其父结点)。但是这样显然是不够的,这样的查找太过于笨重,我们就想出了二叉平衡树: 就是一个结点的左右子树高度差不能等于2,当等于2时,我们就对它进行平衡,这样减少了极端情况,可以明显的缩小查找的时间,二叉平衡在插入的时候 ... »

编译多个文件

假设我们写了一个foo.h的头文件,如下: #ifndef foo_h#define foo_hnamespace m1 { void foo();}#endif 例外,我们肯定还会写它的相关库文件来实现函数的功能,我们就写一个foo.c吧,如下: #include <iostream>#inclu ... »

第四章_树(遍历二叉树)

遍历二叉树,最常用的递归实现遍历二叉树,但我们还可以用非递归和层次遍历树的方法,这里就要用到栈和队列的一些知识,现在就让我们把这两个结合起来一起用。 这个是非递归中序遍历二叉树,非递归我们可以用栈的思想,中序遍历的时候,我们可以先一直把左子树全装栈里面,然后当装完左子树的结点后,我们就出栈并输出,然 ... »

第四章——二叉树

今天看了树的相关操作,因为树的结点我们确定,但我们唯一可以确定的就是,每个结点都只有一个父结点(可以当成孩子父亲理解)。所以我们就可以思考出一个结构来表示树:儿子兄弟表示法,但今天没有写,等下次再写。儿子兄弟表示法我们可以演化成左右子树表示法。定义如下: typedef struct TNode { ... »

日历

这是老师给我们布置的一个实验课做的,用于理解大化小,模块化实现。但因为一些原因,就让我们自行解决了,我记得当时学c语言的时候,看到那一长串代码都脑袋疼,当时连照着抄输出来的日历都是千疮百孔,出现了对不齐等一系列错误。 但是当我今天回头看的时候,发现其实并没有那么难,每个函数实现了对应的功能,然后理解 ... »

链式存储的队列

今天由于一些事情耽误了,本来可以写得更多的,但是却只完成了一部分,那就从下周开始加快进度吧。 对于链式的队列,我们需声明一个头指针和尾指针front和rear,当进队的时候,我们就用尾插法插进链表,当出队的时候,我们就从头开始出。 下面就是相关的代码,由于今天的一些事情耽误了(懒才是最重要的原因), ... »

代码(前三章)

今天花了几个小时才弄出来了,还是有点不熟练,不过万幸的是终于可以自己手写了,哈哈,功夫不负有心人,直接进入正题。 顺序存储结构的单链表: typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next; in ... »

基本概念

1.概念:概念这个东西太有深度了,目前还没有掌握。通过实例来了解吧。 2.例1:1.图书馆放书问题。遇到这种问题,不仅要考虑如何放,还要考虑如何拿,不能只顾放的时候轻松,正所谓前人栽树,后人乘凉。在遇见问题是,一定要思考全。 3.解决问题的效率:a.跟数据的组织方式有关。 b.跟空间的利用效率有关。 ... »

第八章

1. 开发者的接口应具有下面的特征: a 同一性 b 简单性 c 充分性 d 通用性 e 稳定性 2. 本章的两个库: a) <stdlib.h> 该库包含了rand()和 Rand_MAX b) "random.h" 该库包含: int RandomInteger(int low,int heig ... »

画图

为了实现图形库,可以在程序的开始写一个#include行指定它的接口, #include “graphics.h” 下面是一些工具: InitGraphics () 初始化图形软件包 MovePen (x,y) x和y指的是绝对坐标 DrawLine (dx,dy)这里指的是相对坐标 DrawArc ... »

关于写代码时的心态问题

1、一定要先思考,先思考,先思考,脑袋中有个大概的思路再开头,不能一遇见问题就盲目的开干。 2、写代码时一定要有耐心,特别是当做完一个相对于复杂的问题是,面对错误一定要有耐心,耐心地去改。 3、实在发现不了错误时,出现逻辑错误时,就静下来,拿起笔从开头模拟程序一步一步运行,总会有收获的。 4、当你认 ... »