随笔分类 - 数据结构
在“数据结构”书中出现的问题的总结,是我在准备408考试的时候学习过程,希望对大家有帮助
摘要:包括以下内容: 变量解释:int[] arr1; 记录查找表,所有元素都是唯一的 int[] arr2; 记录查找表,元素不唯一 测试用例: 一. 查找key在数组中的位置, 查找不成功则返回-1; 迭代实现: 递归实现: 这里对递归实现,做一定的解释: 首先这个函数的功能是在查找表arr1[]中查
阅读全文
摘要:1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 struct node{ 7 int val; 8 node *left, *right; 9 bool vis; 10 int tag; 11 }; 12 13 void inse...
阅读全文
摘要:vector: 在vc6中,如果要镶嵌使用vector, 如vector<vector<int> >, 后面的两个> 应该用,空格隔开, 否则被编译器认为是移位符 string::npos 的值为-1或者4294967295 string str; str.find(str2) 返回str2第一次在
阅读全文
摘要:最大公约数:辗转相除法, 0和a的最大公因子为a; a和b的最小公倍数: 设a,b的最大公因子为d, 则最小公倍数为ab/d, 但是ab可能会导致溢出,应该先算除法再算乘法,即最小公倍数为a/d*b 分数运算: 用结构体保存分子,分母;为了避免乘法溢出, 分子分母用long long 保存, 满足以
阅读全文
摘要:rand()能输出的最大随机数是32767, 如果要生成最大的随机数应该采用下面的方法
阅读全文
摘要:mid=(l+r)/2可能会出错, 应该用mid=l+(r-l)/2;
阅读全文
摘要:平衡二叉树:一颗空树,或者是具有以下性质的二叉树 左子树和右子树都是平衡二叉树 左子树和右子树的深度只差不超过1 把二叉树节点的平衡因子BF(Balance Factor)定义为该节点的左子树深度减去右子树深度,则平衡二叉树所有结点的平衡因子只能是-1,0,1。只要有一个结点的平衡因子绝对值大于一就
阅读全文
摘要:以二叉链表来作为储存结构的时候,只能找到左右孩子的信息,不能直接得到结点的前驱和后继信息,这种信息只有在遍历的过程中才能实现。在n个结点的二叉链表中必定存在n+1个空链域。可以用这些空链域来保存这些信息;做以下规定:若结点有左子树,则lchild指向其左孩子,若没有左孩子则指向其前驱;若结点有右子树
阅读全文
摘要:带权路径长度最下的称为赫夫曼树(HuffmanTree); 赫夫曼编码 在传送电文的时候希望,电文的总长度尽可能的短。可以做出这样的设计,对电文中的字符设计不同长度的编码,且让出现次数较多的字符采用尽可能短的编码。为了区分不同的编码,则必须任何一个字符的编码都不是另外一个编码的前缀。 赫夫曼树的构造
阅读全文
摘要:什么是哈希表 理想的查找是不经过任何的比较,一次存取就能得到想要查询的记录;要达到这样的目的就需要在记录的储存位置和它的关键字之间建立一个确定的关系f , 让每个关键字和结构中的一个唯一的地址相对应。在查找的时候,只需要对应关系f找到给定值K的像f(K),若结构中存在关键字和K相等,则必定在f(K)
阅读全文
摘要:数据结构 严蔚敏版本 P31 的静态链表 用一位数组来实现链表 通过数组来实现链表的时候,需要自己定义Malloc和Free函数; 静态链表的结构 对一个链表进行一下的初始化 为了辨明数组中哪些空间没有被使用,解决的办法是把所有的没有被使用过的空间组成一个备用链表,这个链表的头部是space[0],
阅读全文
摘要:汉诺塔问题:假设有从左到右有三个名字分别为x,y,z的塔座, 在塔座x上有n各直径大小各不相同,按照直径从小到大编号为1,2,。。。n的圆盘。现在要求将x轴上的n个圆盘移动到塔座z上,并且按同样的顺序叠排,圆盘移动规则如下 思路如下:n=1的时候,问题最简单,直接把圆盘移动到z就行。当n>1的时候,
阅读全文
摘要:在学习“数据结构”一书的时候看到这一道题, 为了展示栈的用法对迷宫做了以下限制 1.迷宫的四周都是不可通的,这样就避免解决边界问题 2.从(1,1)出发,终点为(8,8), 这里用10*10的迷宫为例子 走迷宫通常用的穷举法,即从入口出发,沿着某一方向向前探索,如果能走通就继续向前走,如果不能就原路
阅读全文
摘要:这个程序没有检错功能 输入只能包含0-9,+,-,*,/,(,),#; #只能出现在表达式尾部表示输入结束 保证你的表达式语法正确 下面是一些例子
阅读全文
摘要:1.数制转换:这里是指把10进制的数转换成任意进制的数 n是待转换的十进制数, m是要转换的进制 其实这里用数组,vector,queue都能实现,这里是为了展示栈LIFO的性质 数值转换有更简便的方法: 2.括号匹配的检验:假设表达式中允许包含两种括号,其中嵌套的顺序随意 对于正确匹配的括号,每次
阅读全文
摘要:栈是典型的LIFO(Last In First Out)结构; 对一个栈来说,入栈的时候只能把新的元素添加到栈顶, 出栈的时候只能从栈顶弹出;好比装羽毛球的桶,装羽毛球的时候,只能从最上面把羽毛球装入,取球的时候只能从最上面取出 这里用链表形式来实现栈的结构,栈的每个储存单元由一个类node来实现,
阅读全文

浙公网安备 33010602011771号