用两个栈模拟:
Editor
Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1913 Accepted Submission(s): 591
Problem Description
...
分类:
其他好文 时间:
2014-10-24 16:29:33
阅读次数:
139
题目:用两个栈实现一个队列,并分析相关队列操作的运行时间解答:1、使用两个栈S1与S2;2、通过栈S1的Push执行队列入队操作,通过栈S2的Pop执行队列出队操作3、当栈S2为空后,即S1->Top = S2->Top,转换;栈S2的Push执行入队操作,栈S1的Pop执行出队操作操作时间复杂度:...
分类:
编程语言 时间:
2014-10-18 13:54:59
阅读次数:
265
这个思路实在太难想了。。。。
/*
*str为PUSH,通过s1.push()使元素入栈;
*str为POP时,s2非空,输出栈顶元素,s2.pop()弹出栈顶元素;若s2弹出元素后为空且s1不空,将s1中所有元素push进s2;
*str为POP时,s2为空,若s1不空,将s1中所有元素push进s2,最后输出栈顶元素并通过s2.pop()弹出栈顶元素;
*/题目描述:用两个栈来实现一...
分类:
其他好文 时间:
2014-10-17 16:55:57
阅读次数:
188
主要内容:表达式求值,提交nyoj通过。。。
思路:主要就是一个开两个栈,然后一个操作符栈,一个操作数栈。。
我的代码如下(比较简洁):
/*****
Author Gery
******/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#def...
分类:
其他好文 时间:
2014-10-09 21:25:37
阅读次数:
192
题目连接:http://codevs.cn/problem/1107/
一道很神奇的题目。对于算术表达式一类的问题,可以采用编译原理里的后缀表达式的方式来做,具体做法是分别维护两个栈,一个栈里保存表达式里的数字,另一个栈里保存表达式里的运算符,给每种运算符一个优先级,我们要维护这个栈的单调性,每次读入运算符中的数字或运算符,读入的是运算符时,若这个运算符比栈顶的运算符优先级低,就弹出栈顶元素...
分类:
其他好文 时间:
2014-10-06 14:53:50
阅读次数:
282
转自:http://bylijinnan.iteye.com/blog/1450125————————————————————————————————————————————Java代码 importjava.util.ArrayList; importjava.util.List; importj...
分类:
编程语言 时间:
2014-10-06 01:36:29
阅读次数:
280
一、题目 用一个数组实现三个(或多个)栈二、解答 用一个数组实现三个乃至多个栈,如果想使用一个数组构造两个栈的思想则行不通; 考虑使用静态链表,数组结点中存在两个域,关键字域与指示栈的前驱的游标,则可以使三个栈可以用一个数组表示; ADT的关键术语: Capacity: 数组的容量; S...
分类:
其他好文 时间:
2014-10-05 23:21:59
阅读次数:
216
一、题目 用一个数组A[ 1....N ]实现两个栈,除非数组的每一个单元都被使用,否则栈例程不能有溢出,注意PUSH和POP操作的时间应为O(1)。二、解法 对于一个数组,由它的两端作为栈底,栈向数组中间扩展。当数组中每个元素被用到时,栈满。三、代码struct Node;typedef No.....
分类:
其他好文 时间:
2014-10-05 19:56:29
阅读次数:
221
波兰式,操作符放在操作数前。逆波兰式,操作符放在操作数后。中序的话,用两个栈,一个存操作符, 一个存操作数,根据操作符优先级来操作。为了处理边界情况,在操作符的栈底和栈顶都放了一个"#"。伪代码如下: 1 stack ops; 2 stack nums; 3 ops.push('#'); 4 5 ....
分类:
其他好文 时间:
2014-10-05 17:09:38
阅读次数:
297
关于两个栈实现一个队列和两个队列实现一个栈问题,网上有很多资料。这里只描述自己认为操作最少的方法。
两个栈实现一个队列
思想:假设两个栈分别为s1,s2。对s1进行入队,出队时,先判断s2是否为空,如果是则将s1中元素压入s2并弹出最上面元素,如果不是,则直接弹出s2最上面的元素。
EnQueue(s1,s2,k){
push(s1,k);
}
//出队
DeQueue(s1,s2)...
分类:
其他好文 时间:
2014-09-29 20:43:42
阅读次数:
213