随笔分类 -  Data Structures

数据结构学习
摘要:快排 int partition(vector<int>& nums, int start, int end) { int tmp = nums[start]; int i = start, j = end; while (i < j) { while (i < j && nums[j] >= tm 阅读全文
posted @ 2021-09-13 09:48 nullxjx 阅读(54) 评论(0) 推荐(0) 编辑
摘要:今天记录一下用DFS和回溯法实现走迷宫问题,输出一个迷宫中从起点到终点的所有可能的路径。 迷宫我们用一个二维的字符数组表示,其中的0表示路,1表示墙。 为了方便起见,我们从txt文件中读入这个数组,txt文件中的内容如下所示: 接下来我们写一下从文件中读入这个数组的代码: 1 vector init 阅读全文
posted @ 2020-11-22 17:41 nullxjx 阅读(592) 评论(0) 推荐(0) 编辑
摘要:已经2年多没更新博客了,2年前这时候我还在准备考研,现在都研二了,时间过得可真快呀,研究生3年也转瞬即逝。最近稍微有点时间,于是在刷Leetcode,昨天遇到了一道题,是字符串匹配问题,我一看就知道用KMP算法,题目如下: 28. Implement strStr() 该题难度为easy,但我感觉K 阅读全文
posted @ 2020-10-09 00:22 nullxjx 阅读(605) 评论(1) 推荐(1) 编辑
摘要:“遍历”是二叉树各种操作的基础,可以在遍历过程中对节点进行各种操作,如:求节点的双亲,求节点的孩子,判断节点的层次。当然,还有一些更重要的操作,例如,依据遍历序列建立二叉树,对建立的二叉树进行线索化,等等。 二叉树的各种遍历操作必须了然于心,无论是递归的,还是非递归的。递归算法的优点是形式简单,当然 阅读全文
posted @ 2018-07-15 21:53 nullxjx 阅读(908) 评论(0) 推荐(0) 编辑
摘要:这个没啥好说的,写完上一个正好写一下这一个,都是基于堆实现的,不过这里没有用C++内置数组,原因是添加删除元素有点麻烦,所以用了vector来实现。 详细内容见《算法导论》P90 代码 1 // 基于最大堆实现最大优先队列.cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include 阅读全文
posted @ 2018-01-13 21:15 nullxjx 阅读(646) 评论(0) 推荐(0) 编辑
摘要:距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug。其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自己也是思考,学习,调试了很久,慢慢地清除了一个一个bug。一周的课后时间都花在这上面了,学习了一点东 阅读全文
posted @ 2017-04-11 20:21 nullxjx 阅读(4307) 评论(0) 推荐(0) 编辑
摘要:哈夫曼编码应该算数据结构“树”这一章最重要的一个问题了,当时大一下学期学的时候没弄懂,一年后现在算是明白了。 首先,讲讲思路。 正好这学期在学算法,这里面就用到了贪心算法,刚好练练手。 整个问题有几个关键点: 1,首先是要思考怎么样存下从txt中读取的所有字符中的每种字符出现的次数,首先想到的应该是 阅读全文
posted @ 2017-04-05 20:29 nullxjx 阅读(4020) 评论(0) 推荐(0) 编辑
摘要:基本思想: 第一个访问的结点应该是最左下角的结点 假设刚才访问的结点是p 然后P的后继是谁? 若p->rchild是指针,说明P有右子树,下一个结点应该是P右子树中最左下角的结点 若p->rchild是线索,直接访问p->rchild 如此循环往复... 1 #include <iostream> 阅读全文
posted @ 2017-03-28 20:23 nullxjx 阅读(2176) 评论(0) 推荐(0) 编辑
摘要:1 #include <iostream> 2 #include <stdio.h> 3 4 using namespace std; 5 6 typedef char TElemType; 7 enum PointerTag{ Link,Thread };//Link == 0 :指针,Threa 阅读全文
posted @ 2017-03-28 19:33 nullxjx 阅读(758) 评论(0) 推荐(0) 编辑
摘要:1 // 广度优先遍历二叉树(BFS).cpp: 定义控制台应用程序的入口点。 2 // 3 4 #include "stdafx.h" 5 6 7 #include <iostream> 8 #include <stdio.h> 9 #include <malloc.h> 10 #include 阅读全文
posted @ 2017-03-28 18:58 nullxjx 阅读(1431) 评论(0) 推荐(0) 编辑
摘要:1 #include <iostream> 2 #include <stdio.h> 3 #include <malloc.h> 4 5 using namespace std; 6 7 #define STACK_INIT_SIZE 30 8 #define STACKINCREASE 10 9 阅读全文
posted @ 2017-03-28 13:04 nullxjx 阅读(498) 评论(0) 推荐(0) 编辑
摘要:接着上篇继续写的,思路是自己想的,其实也挺简单的 欢迎指出错误 这一次还是从相应的文件中读取数据,测试时请在相应目录放入相应文件(input.txt) 测试数据和上篇一样: 4 6 5 1 2 32 2 22 4 54 1 94 6 1 4 6 4 1 3 72 2 62 4 -53 2 4 运行没 阅读全文
posted @ 2016-10-30 21:28 nullxjx 阅读(3241) 评论(2) 推荐(0) 编辑
摘要:第一次看的时候没看懂这里,几个月后回来温习,彻底搞懂了! 完整思路:http://blog.csdn.net/zhuyi2654715/article/details/6729783 大神讲的非常清楚,一下子就看懂了! 下面贴上自己写的代码,代码纯手写,没有参考别人或者书上,可能有瑕疵,欢迎指出! 阅读全文
posted @ 2016-10-30 21:23 nullxjx 阅读(3034) 评论(0) 推荐(0) 编辑
摘要:废话不多说,看毛片算法的核心在于next数组。 很多地方用的都是严书上的方法来求解next数组,代码确实简洁明了,但是可能对于初学者来说不容易想到,甚至不是一下子能理解。(好了,其实我说的就是自己,别笑) 以下为严师太的代码,也是很多人用的 照着代码用手调试了一遍,确实厉害 但是就跟我看别人写的递归 阅读全文
posted @ 2016-10-16 12:52 nullxjx 阅读(805) 评论(0) 推荐(0) 编辑
摘要:问题描述:魔术师手里一共有13张牌,全是黑桃,1~13. 魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下), 第一次摸出第一张,是1,翻过来放在桌面上。 第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸), 第三次摸出从上往下数第三张,是3,翻过来 阅读全文
posted @ 2016-10-12 19:10 nullxjx 阅读(486) 评论(0) 推荐(0) 编辑
摘要:问题描述: 据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新 阅读全文
posted @ 2016-10-11 20:02 nullxjx 阅读(817) 评论(0) 推荐(0) 编辑
摘要:由于两者方法相近,所以直接放一起方便互相对比 方法参考相关大神的讲解,特此说明,代码为本人所写,转载请声明! 本人测试了五组数据,结果已附图如下,暂时没发现问题,如有问题,多谢指出。 以下摘自@wanghetao http://www.cnblogs.com/wanghetao/archive/20 阅读全文
posted @ 2016-10-08 20:32 nullxjx 阅读(15100) 评论(8) 推荐(2) 编辑
摘要:1 #include <iostream> 2 #include<stdlib.h> 3 4 using namespace std; 5 6 #define STACK_INIT_SIZE 100 7 #define STACKINCREASE 10 8 9 //为了简化函数,数据栈和符号栈用了一 阅读全文
posted @ 2016-10-07 18:45 nullxjx 阅读(3173) 评论(0) 推荐(0) 编辑
摘要:写在前面 作为初学者的我表示这个程序真心不能自己写出来,花了一些时间才看懂@JackyBing写的这段代码,并改了一些东西 感谢@JackyBing的代码,书上的真心没看懂,现在理解了, 呜呜呜,感觉自己好弱呀,这都看了这么久,还是得像大神看齐。 一起学习,共同进步! 核心算法 do { if(当前 阅读全文
posted @ 2016-09-25 16:36 nullxjx 阅读(1485) 评论(0) 推荐(0) 编辑
摘要:1 #include <iostream> 2 #include<stdlib.h> 3 4 using namespace std; 5 6 7 #define MAXSIZE 20 8 9 typedef struct LNode 10 { 11 int coef;//系数 12 int exp 阅读全文
posted @ 2016-09-24 14:33 nullxjx 阅读(3340) 评论(1) 推荐(0) 编辑