随笔分类 -  数据结构

摘要:在优先队列中,优先级高的元素先出队列。 标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。优先队列的第一种用法,也是最常用的用法: priority_queue<int> qi; 通过<操作符可知在整数中元素大的优先级高。故示例1中输出结果为:9 6 5 3 2第二种方法:在示例1中,如果 阅读全文
posted @ 2017-04-18 10:31 lineaar 阅读(182) 评论(0) 推荐(0)
摘要:对于比较稠密的图,通常采用邻接矩阵来表示,如下左图所示,无权的路径通常用1表示两点有连接,0表示没有连接,若是加权图,则把1改成权重就好,如下右图。 邻接表结构用来表示稀疏的图,图的拓扑排序是指按每一个顶点的入度来对顶点进行排序,无权最短路径指的是所有路径的权重都是1,求某一点到另外一点的最短路径 阅读全文
posted @ 2017-04-07 17:12 lineaar 阅读(2341) 评论(0) 推荐(0)
摘要:// erchatoshu.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; //二叉树节点结构//////////////////////// typedef struct TreeNode *Position; typedef struct TreeNode *SearchT... 阅读全文
posted @ 2017-04-06 22:40 lineaar 阅读(2630) 评论(0) 推荐(0)
摘要:本练习主要做了几个工作: 1.给定一个数组来初始化二叉堆,第一种方法是通过不断插入,时间复杂度是O(nlgn),第二种方法是先把数组填入二叉堆,再从下标为H->SIZE/2的节点开始下滤,这是因为只有下标小于为H->SIZE/2才有孩子,从而可以用线性时间完成二叉堆的初始化。 2.二叉堆的下滤和上滤 阅读全文
posted @ 2017-04-01 20:42 lineaar 阅读(519) 评论(0) 推荐(0)
摘要:如上图所示为二项队列,不是一棵树而是一片森林,其合并操作有点像二进制加法,当两个二进制相加的某位都有1时,则当进位为0时,此位相加后的结果也为0,删除最小值操作则先找出最小的树根,把该树的树根去掉之后形成许多子树,用这些子树构成一个新的二项队列,再去跟原来剩下的二项式队列相加即可,删除时主要考虑的是 阅读全文
posted @ 2017-03-31 16:21 lineaar 阅读(561) 评论(0) 推荐(0)
摘要:数据结构中最欣欣向荣的两个分支就是:平衡树 和可合并堆,高级树结构的核心都是围绕如何使树到达平衡而展开,高级堆结构的核心就是如何有效地进行合并。左式堆由于使用二叉链表的存储结构,对动态操作支持良好,在需要合并操作的场合,是极佳的选择。 左式堆的性质: 1.【堆性质】:任意节点的关键字大于等于其孩子节 阅读全文
posted @ 2017-03-30 16:56 lineaar 阅读(236) 评论(0) 推荐(0)
摘要:多项式用链表保存,设多项式的最高次为M和N,则申请一个大小为M+1+N的散列表,其中M+1+N不必是素数,用结果多项式的阶次对M+1+N取余作为散列函数,可以把多项式第i阶次项的系数保存在散列表第i项上,方便后续重建多项式的链表。 阅读全文
posted @ 2017-03-29 15:54 lineaar 阅读(189) 评论(0) 推荐(0)
摘要:再散列之后散列函数要重新计算。 阅读全文
posted @ 2017-03-28 21:06 lineaar 阅读(310) 评论(0) 推荐(0)
摘要:#include "stdafx.h" #include #include using namespace std; #ifndef _HashSsp_ struct ListNode; typedef struct ListNode *Position; struct HashTbl; typedef struct HashTbl *HashTable; HashTable Initiali... 阅读全文
posted @ 2017-03-28 16:50 lineaar 阅读(508) 评论(0) 推荐(0)
摘要:使用标准库的栈和队列时,先包含相关的头文件 #include<stack> #include<queue> 定义栈如下: stack<int> s; 定义队列如下: queue<int> q; 阅读全文
posted @ 2017-03-22 22:36 lineaar 阅读(162) 评论(0) 推荐(0)
摘要:// erchashu_xiti.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; //////////定义树节点结构 typedef struct Tree { int key; Tree* p; Tree* left; Tree* right;... 阅读全文
posted @ 2017-03-21 23:38 lineaar 阅读(200) 评论(0) 推荐(0)
摘要:// duilie.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include using namespace std; struct QueueRecord; typedef struct QueueRecord *Queue; int IsEmpty(Queue Q); int IsFull(Queue Q); Que... 阅读全文
posted @ 2017-03-21 23:37 lineaar 阅读(177) 评论(0) 推荐(0)
摘要:主要是利用快排的RANDOMIZED_PARTTITION()函数返回一个第q小的数,且第q小的数的坐标是绝对坐标而不是相对坐标,比如输入坐标范围为[p,r]的数组,第q小的数会返回p+q-1的坐标。 阅读全文
posted @ 2017-03-17 23:32 lineaar 阅读(264) 评论(0) 推荐(0)
摘要:#include "stdafx.h" #include #include #include #include using namespace std; int main() { stack stk; string str; cin >> str; char h; int sum, b; for (int i = 0; i = 'A'&&str[i] <= 'F') ... 阅读全文
posted @ 2017-03-17 21:24 lineaar 阅读(275) 评论(0) 推荐(0)
摘要:1 #include "stdafx.h" 2 #include 3 #include 4 using namespace std; 5 typedef int ElementType; 6 7 8 struct TreeNode; 9 typedef struct TreeNode *Position; 10 typedef struct TreeNo... 阅读全文
posted @ 2017-03-16 23:11 lineaar 阅读(132) 评论(0) 推荐(0)