随笔分类 -  数据结构

摘要:一、前言 学习数据结构已经有很长时间了,加上之前搞过一段时间的ACM,虽然搞得并不怎么样吧,但是喜欢的东西不能放弃,一直打算写一个算法模拟系统,对常用的一些算法进行简单的模拟,于是我的毕业设计就这样诞生了。我相信这个简单的系统可以给初学数据结构和算法的人带来一定的帮助。在此做个介绍并留个纪念。另外, 阅读全文
posted @ 2016-06-13 07:44 hjzqyx 阅读(4525) 评论(13) 推荐(11) 编辑
摘要:题目链接: http://www.lintcode.com/zh-cn/problem/binary-tree-zigzag-level-order-traversal/二叉树的锯齿形层次遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行)样例 ... 阅读全文
posted @ 2015-12-13 00:58 hjzqyx 阅读(728) 评论(0) 推荐(0) 编辑
摘要:题目链接: 不同的二叉查找树:http://www.lintcode.com/zh-cn/problem/unique-binary-search-trees/ 不同的二叉查找树 II:http://www.lintcode.com/zh-cn/problem/unique-binary-sea... 阅读全文
posted @ 2015-12-12 00:08 hjzqyx 阅读(10266) 评论(2) 推荐(3) 编辑
摘要:题目来自lintcode, 链接:http://www.lintcode.com/zh-cn/problem/longest-palindromic-substring/最长回文子串给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。样例给出字符串... 阅读全文
posted @ 2015-12-09 19:36 hjzqyx 阅读(2089) 评论(0) 推荐(0) 编辑
摘要:c++ reference: http://www.cplusplus.com/reference/algorithm/make_heap/ heap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层... 阅读全文
posted @ 2015-11-28 10:47 hjzqyx 阅读(2073) 评论(0) 推荐(0) 编辑
摘要:对于每一个数来说,必须进栈一次、出栈一次。我们把进栈设为状态‘1’,出栈设为状态‘0’。n个数的所有状态对应n个1和n个0组成的2n位二进制数。由于等待入栈的操作数按照1‥n的顺序排列、入栈的操作数b大于等于出栈的操作数a(a≤b),因此输出序列的总数目=由左而右扫描由n个1和n个0组成的2n位... 阅读全文
posted @ 2015-09-29 00:28 hjzqyx 阅读(6256) 评论(0) 推荐(1) 编辑
摘要:首先看一下斐波那契的矩阵表示:数列的递推公式为:f(1)=1,f(2)=2,f(n)=f(n-1)+f(n-2)(n>=3) 用矩阵表示为: 进一步,可以得出直接推导公式:#include #include#include#include#include#include #define N 10... 阅读全文
posted @ 2015-09-14 23:47 hjzqyx 阅读(852) 评论(0) 推荐(0) 编辑
摘要:一、红黑树的介绍先来看下算法导论对R-B Tree的介绍: 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。 前面说了,红黑树,是一... 阅读全文
posted @ 2015-09-12 00:23 hjzqyx 阅读(434) 评论(0) 推荐(0) 编辑
摘要:#include #include#include#include#includeusing namespace std;struct Tree{ int x; Tree *lchild, *rchild; Tree(){ lchild = rchild = NULL... 阅读全文
posted @ 2015-08-01 16:52 hjzqyx 阅读(420) 评论(0) 推荐(0) 编辑
摘要:#include #include#include#include#define MAXSIZE 100using namespace std;struct Stack{ int s[MAXSIZE]; int top=0; bool stackOverFlow(){ ... 阅读全文
posted @ 2015-07-30 20:20 hjzqyx 阅读(300) 评论(0) 推荐(0) 编辑
摘要:#include #include#include#include#include #include#include#include#define N 100#define MAXN 0x3f3f3f3fusing namespace std;struct TreeNode{ TreeNode... 阅读全文
posted @ 2015-07-27 16:56 hjzqyx 阅读(686) 评论(0) 推荐(0) 编辑
摘要:1.表插入排序只是求得一个有序的链表,它是修改指针的值来代替移动记录,操作过程如下2.但是这样只能进行顺序查找,不能进行随机查找,为了能实现有序表的折半查找,需要对记录进行重新排列。操作过程如下:3.测试程序如下:#include#include#include#include using name... 阅读全文
posted @ 2015-07-26 12:57 hjzqyx 阅读(2579) 评论(0) 推荐(1) 编辑
摘要:1.三种选择排序(简单选择排序,树形选择排序,堆排序)#include#include#include#include#include#include #includeconst int INF=0X3f3f3f3f;using namespace std;typedef struct{ int... 阅读全文
posted @ 2015-07-26 10:43 hjzqyx 阅读(991) 评论(0) 推荐(0) 编辑
摘要:1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大... 阅读全文
posted @ 2015-07-26 00:27 hjzqyx 阅读(1183) 评论(0) 推荐(0) 编辑
摘要:平衡二叉树的插入过程:http://www.cnblogs.com/hujunzheng/p/4665451.html对于二叉平衡树的删除采用的是二叉排序树删除的思路: 假设被删结点是*p,其双亲是*f,不失一般性,设*p是*f的左孩子,下面分三种情况讨论: ⑴ 若结点*p是叶子结点,则只需修改... 阅读全文
posted @ 2015-07-23 22:35 hjzqyx 阅读(933) 评论(0) 推荐(0) 编辑
摘要:#include#include#include#include#include#includeusing namespace std;template class Sqlist{ public: T data[100]; int n; void in... 阅读全文
posted @ 2015-07-21 21:36 hjzqyx 阅读(646) 评论(0) 推荐(0) 编辑
摘要:平衡二叉树(Balancedbinary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskiiand Landis)于1962年首先提出的,所以又称为AVL树。定义:平衡二叉树或为空树,或为如下性质的二叉排序树:(1)左右子树深度之差的绝对值不超过1;(2)左右子树仍然为平衡二叉树... 阅读全文
posted @ 2015-07-21 19:52 hjzqyx 阅读(840) 评论(0) 推荐(0) 编辑
摘要:查找效率最高即平均查找长度最小,根据前面所学知识,我们可以给出有序表在非等概率情况下应遵循的两个原则: 1、最先访问的结点应是访问概率最大的结点; 2、每次访问应使结点两边尚未访问的结点的被访概率之和尽可能相等。 这两个原则可用一句话来表示,即判定树为带权内路径长度之和最小的二叉树,亦即:... 阅读全文
posted @ 2015-07-18 22:55 hjzqyx 阅读(4184) 评论(0) 推荐(0) 编辑
摘要://编码#include #include#include#include#include#include#include#include using namespace std;typedef struct HuffmanNode{ int w;//节点的权值 int ld, rd;... 阅读全文
posted @ 2015-07-18 10:23 hjzqyx 阅读(503) 评论(0) 推荐(0) 编辑
摘要:求关键路径,只需理解顶点(事件)和边(活动)各自的两个特征属性以及求法即可: Ø 先根据首结点的Ve(j)=0由前向后(正拓扑序列)计算各顶点的最早发生时间 Ø 再根据终结点的Vl(j)等于它的Ve(j)由后向前(逆序拓扑)依次求解各顶点的最晚发生时间 Ø 根据边的ee(i)等于它的发出... 阅读全文
posted @ 2015-07-17 00:01 hjzqyx 阅读(1198) 评论(0) 推荐(0) 编辑