10 2020 档案
摘要:哈夫曼树是一棵怎样的树呢,假如我们给出一堆数据"1,2,3,4,5"(数据对应的数字还代表这个数字出现的次数)来构建一颗二叉树,怎样一颗二叉树才能使我们的查找效率率最高呢,那就是哈夫曼树了,在前面的“1,2,3,4,5”中,我们先选出两个最小的,那就是“1,2”,然后1和2构建一个结点。该结点为3,
阅读全文
摘要:从二叉树到查找二叉树再到平衡二叉树,人们总是为了追求完美而不断奋斗,今天解决的问题是,当我们读入几组长度一样的数据,我们如何判断它们构建出来的树是否一样。 为了解决这个问题,我们可以先用一组数据创建一颗树,然后再将后面的几组数据分别与创建好的这颗树做比较。 #include <stdio.h>#in
阅读全文
摘要:我们为了解决二叉树的查找,我们构建出了二叉搜索树(左子树小于其父结点,右子树大于其父结点)。但是这样显然是不够的,这样的查找太过于笨重,我们就想出了二叉平衡树: 就是一个结点的左右子树高度差不能等于2,当等于2时,我们就对它进行平衡,这样减少了极端情况,可以明显的缩小查找的时间,二叉平衡在插入的时候
阅读全文
摘要:假设我们写了一个foo.h的头文件,如下: #ifndef foo_h#define foo_hnamespace m1 { void foo();}#endif 例外,我们肯定还会写它的相关库文件来实现函数的功能,我们就写一个foo.c吧,如下: #include <iostream>#inclu
阅读全文
摘要:二叉树,虽然方便遍历和初始化存储,但是我们如果要插入呢,要查找里面的数据呢,怎么办,这就需要我们良好的设计这个树了,我们在插入的时候怎麽插,我们可以设计出这样一种树,它的左子树必须小于它的父结点,它的右子树必须大于它的父结点,就这样,我们就可以构造出一颗可以方便我们查找的树了,也可以方便我们插入,在
阅读全文
摘要:遍历二叉树,最常用的递归实现遍历二叉树,但我们还可以用非递归和层次遍历树的方法,这里就要用到栈和队列的一些知识,现在就让我们把这两个结合起来一起用。 这个是非递归中序遍历二叉树,非递归我们可以用栈的思想,中序遍历的时候,我们可以先一直把左子树全装栈里面,然后当装完左子树的结点后,我们就出栈并输出,然
阅读全文
摘要:今天看了树的相关操作,因为每个结点的子结点我们不能确定,但我们唯一可以确定的就是,每个结点都只有一个父结点(可以当成孩子父亲理解)。所以我们就可以思考出一个结构来表示树:儿子兄弟表示法,但今天没有写,等下次再写。儿子兄弟表示法我们可以演化成左右子树(二叉树)表示法。定义如下: typedef str
阅读全文
摘要:指针,可以说是c语言最重要也是最难的了。 指针是指向变量的地址,双重指针是指向指针的地址。 当我们使用函数传递指针时,我们只能修该对应地址的值,但我们不能修改指针的地址。所以当我们要修改指针的地址时,我们就要使用当双重指针了,双重指针指向指针的地址。我们用函数代码进行说明吧。 void Create
阅读全文
摘要:这是老师给我们布置的一个实验课做的,用于理解大化小,模块化实现。但因为一些原因,就让我们自行解决了,我记得当时学c语言的时候,看到那一长串代码都脑袋疼,当时连照着抄输出来的日历都是千疮百孔,出现了对不齐等一系列错误。 但是当我今天回头看的时候,发现其实并没有那么难,每个函数实现了对应的功能,然后理解
阅读全文
摘要:今天由于一些事情耽误了,本来可以写得更多的,但是却只完成了一部分,那就从下周开始加快进度吧。 对于链式的队列,我们需声明一个头指针和尾指针front和rear,当进队的时候,我们就用尾插法插进链表,当出队的时候,我们就从头开始出。 下面就是相关的代码,由于今天的一些事情耽误了(懒才是最重要的原因),
阅读全文
摘要:今天花了几个小时才弄出来了,还是有点不熟练,不过万幸的是终于可以自己手写了,哈哈,功夫不负有心人,直接进入正题。 顺序存储结构的单链表: typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next; in
阅读全文
摘要:今天出去逛了一下,回来都快11点了,不早了,弄了早点睡。直接进入主题。 队列:顾名思义,先进先出,跟排队一样。 队列同样也分为两种:顺序存储和链式存储两种。 1.顺序存储: typedef struct QNode { int *data; int front; int rear; int maxs
阅读全文
摘要:这两天学习了栈的相关基础操作,后续的练习等有空了再写·,这两天的学习,发现之所以上学期的数据结构没有学好,是因为自己没有下功夫,及当遇见困难的时候,应该用手头的工具去实现攻克它,不过现在一切都在开始慢慢步入正轨了,先把数据结构学完了来,flag就不先立了(每次都没有成功过)。 进入正题吧。 栈:先进
阅读全文
摘要:这个简单的问题没想到我现在才弄清了,不过弄清了就好,一天进步一点点! 我通过代码来说明: int a = 1; int b = a; a = 3; printf("b is %d",b); 这个运行的结果b is 1,因为b 赋值的时候a = 1.就算后续a再变化b也是当时的值。 接下来就可以运用到
阅读全文
摘要:由于放假的原因,这一章拖了两天,看来下次的任务一定要在放假前昨完,不然就会像这样,那就不说废话了,直接进入主题。 链表有很多种形式,由于时间问题,我就先学了最简单了的一种也是最常用到的一种——单链表(单纯为了完成任务),单链表的实现有两种方式:顺序存储实现和链式存储实现。工科的精华在于实践,我就直接
阅读全文