文章分类 -  数据结构

计算器表达式求值实现
摘要:实现对包括加减乘除及括号表达式的求值。使用两个栈来实现,一个栈存放数,一个存放运算符。程序运行时,如果读入是数字则直接入栈,如果是运算符则根据优先级来处理。#include #include #include #include #include using namespace std;char gI... 阅读全文
posted @ 2014-06-28 19:47 CrazyAC 阅读(323) 评论(0) 推荐(0)
堆排序
摘要:1.建堆。n个数存放于数组里,下表从1到n。叶子下标则是:n/2+1, n/2+2...n。建堆的时候从最后一个非叶子节点到第一个节点,不断进行调整。#include #include #include #include #include using namespace std;void MaxHeapify(int maxHeap[], int n, int nowPos) { int left, right, largest; left = nowPos maxHeap[nowPos]) largest = left; if(right maxHeap[largest]) la... 阅读全文
posted @ 2013-10-11 17:00 CrazyAC 阅读(256) 评论(0) 推荐(0)
左偏树
摘要:1左偏树(Leftist Tree)是一种可并堆(Mergeable Heap) ,它除了支持优先队列的三个基本操作(插入,删除,取最小节点),还支持一个很特殊的操作——合并操作。2左偏树是一棵堆有序(Heap Ordered)二叉树。3左偏树满足左偏性质(Leftist Property)。[性质1]节点的键值小于或等于它的左右子节点的键值。[性质2] 节点的左子节点的距离不小于右子节点的距离。[性质3] 节点的左子节点右子节点也是一颗左偏树。合并操作的代码如下:Function Merge(A, B) If A = NULL Then return B If B = NULL Then r 阅读全文
posted @ 2011-03-03 17:54 CrazyAC 阅读(8329) 评论(0) 推荐(1)
单调队列
摘要:求满足一定长度的区间最值1.hdoj 3415 Max Sum of Max-K-sub-sequence解题报告:http://www.cppblog.com/wuxu/archive/2010/08/24/124575.html?opt=admin 阅读全文
posted @ 2011-01-08 15:41 CrazyAC 阅读(226) 评论(0) 推荐(0)