
data structure
文章平均质量分 84
royzdr
这个作者很懒,什么都没留下…
展开
-
习题3.10 汉诺塔的非递归实现
题目详情我就不描述了,很经典的问题,然后问题是,用递归来做是很好理解,很顺理成章的问题,但是用非递归,对我来说感觉很别扭,断断续续看了两个都领悟,网上对于非递归的方法其实也说的不清不楚,也可能是我比较笨,我尝试讲一下我的理解。首先理解什么是汉诺塔,可以看这个视频:「递归练习」汉诺塔看完之后,然后可以列一下汉诺塔的解法:盘数解法1a->c原创 2018-01-11 11:18:02 · 1414 阅读 · 2 评论 -
排序方法了解一下(冒泡排序、选择排序、堆排序、插入排序、希尔排序、归并排序、快速排序、基数排序)
看个排序的算法居然看了一周,真是罪过,效率低得可怕。。。。。排序方法有冒泡排序、选择排序、堆排序、插入排序、希尔排序、归并排序、快速排序、基数排序其中写基数排序时候被自己蠢死了,在一个循环里,用i作为计数器,在循环里的另一个循环又用了一次,然后死活发现不了错误。下次还是不要重复用同一个i,每个循环单独声明一个变量#include <stdio.h>#include <stdli...原创 2018-02-08 16:53:20 · 404 阅读 · 0 评论 -
邻接表形式的图的深度优先搜索
#include #include #include #define MaxVertexNum 1000bool Visited[MaxVertexNum]; /**< 记录顶点是否已经被访问了 */typedef int Vertex;typedef int WeightType;typedef char DataType;/**<原创 2018-01-28 19:13:43 · 769 阅读 · 0 评论 -
邻接矩阵形式图的深度优先搜索
/** 测试用例数据结构 陈越 第二版 P219 6.2 * 8 * 9* 0 1 1 * 1 2 1 * 2 3 1 * 3 0 1 * 0 4 1 * 4 5 1 * 5 6 1 * 6 7 1 * 7 4 1 * A B C D E F G H */#include #include #include #define MaxVertex原创 2018-01-26 09:45:57 · 425 阅读 · 0 评论 -
习题3.11 表达式转换
这题几乎写了一天。。。。烦死我了。。。。不过总比写了一天还写不出的非递归汉诺塔强。。。。。那个明天再不搞定,我就。。。。。。。。也不能怎样。习题3.11 表达式转换(25 分)算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。日常使用的算术表达式是采用中缀表示法,即二元运算符位于两个运算数中间。请设计程序将中缀表达式转换为后缀表达式。输入格式:输原创 2018-01-10 16:36:11 · 1453 阅读 · 0 评论 -
练习4.1 根据后序和中序遍历输出先序遍历(25 分)
居然一次性就AC了。。。。简直不敢相信本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,行末不得有多余空格。输入样例:72原创 2018-01-18 11:27:31 · 2111 阅读 · 1 评论 -
待解决-习题3.8 符号配对
例如有一个用例:*/*/*/*/*/*/*程序怎么知道。。。。哪个左,哪个右。。。头都痛。。。。。。习题3.8 符号配对(20 分)请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。原创 2018-01-08 17:27:04 · 1253 阅读 · 0 评论 -
习题3.6 一元多项式的乘法与加法运算
这里用一巨笨的方法做这题,因为这题我做的时间跨度比较大。。。。所以就写得又长又臭,最后勉强ac就没动力再改了。设计函数分别求两个一元多项式的乘积与和。输入格式:输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。输出格式:输出分2行,分别以指数递降方式输出乘积多原创 2018-01-08 15:39:05 · 680 阅读 · 0 评论 -
查找数组中第k大的数字
其实之前写的 6-11 求自定类型元素序列的中位数 是求第k大数字的一个特例。当时是将某一数组全部按照由大到小排列后,才取出中位数输出。然后昨天看数据结构时候才发现可以不完全排序,只拍第0到k个之间的就可以了。实现思想和快排类似:选取一个任意数,将小于这个数的数字排在该数的右边,大于这个数的数字排在该数的左边,比较此时k与这个数所在的位置i的大小,如果i>k,那么去继续排左边的数字,如果i<k,那原创 2017-12-29 08:28:52 · 1139 阅读 · 0 评论 -
习题2.4 递增的整数序列链表的插入
被一个小问题气死我了!!!!while( (L->Next->Data Next)和while(L->Next && (L->Next->Data 有什么不同????!!!前一句在遇到L->Next为空时,直接就段错误。。。。。。本题要求实现一个函数,在递增的整数序列链表(带头结点)中插入一个新整数,并保持该序列的有序性。函数接口定义:Lis原创 2018-01-03 15:25:43 · 3427 阅读 · 3 评论 -
习题2.8 输出全排列(20 分)
习题2.8 输出全排列(20 分)请编写程序输出前n个正整数的全排列(n10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间。输入格式:输入给出正整数n(10)。输出格式:输出1到n的全排列。每种排列占一行,数字间无空格。排列的输出顺序为字典序,即序列a1,a2,⋯,an排在序列b1,b2,⋯,bn之前原创 2018-01-03 11:03:10 · 1878 阅读 · 0 评论 -
所以这两种写法有什么不一样???
今天做线性探索法的题目(题目在下面),又遇到令我很费解的事情。下面这两种写法究竟有什么不一样???Position Find(HashTable H, ElementType Key){ Position NewPos; int CNum; for(CNum = 0, NewPos = Hash(Key, H->TableSize); CNum<H-...原创 2018-02-23 16:19:17 · 668 阅读 · 0 评论