用数组表示两个栈,将两个栈的栈顶并在一起,用树状数组维护一下操作即可。 代码 ...
分类:
其他好文 时间:
2016-05-09 14:14:48
阅读次数:
115
思路:入队:只将栈s1作为入队。出队:将栈s2作为出队,如果栈s1不为空,s2为空,出队时将s1的元素倒入s2中,再pop();否则s2不为空,出队时直接在栈s2中pop();#include<iostream>
#include<stack>
#include<assert.h>
usingnamespacestd;
template<classT..
分类:
其他好文 时间:
2016-05-02 17:11:45
阅读次数:
177
用两个栈实现一个队列,并实现两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能。栈的特点是“先进后出,后进先出”,而队列的特点是“先进先出,后进后出”,因此可以想到只用一个栈是无法完成的,所以会需要两个栈,先将输入的数据都..
分类:
其他好文 时间:
2016-04-28 12:36:57
阅读次数:
250
//1.两个栈栈头在数组头尾(利用率高)
//2.两个栈栈头在数组中间(利用率低)
//3.奇偶下标分别为两栈(扩容时复制数据简单)
//实现1
template<classT>
classStack
{
public:
Stack()
:_array(NULL)
,_q1Size(0)
,_q2Size(0)
,_capacity(0)
{}
~Stack()
{
..
分类:
编程语言 时间:
2016-04-25 22:58:29
阅读次数:
389
栈的特点:先进后出队列特点:先进先出//实现两个栈实现一个队列
//每次都push到_s1中,pop从_s2,提高效率(每次不用互相倒栈)#pragmaonce
#include<iostream>
#include<stack>
#include<queue>
#include<assert.h>
usingnamespacestd;
template<..
分类:
其他好文 时间:
2016-04-25 19:45:04
阅读次数:
137
运算时求值核心思想:将运算式逐字符读取,若是运算数就进运算数栈,若是运算符就与运算符栈顶比较运算符的优先级来做相应的操作。直到遇到运算式的结束符且运算符栈里没有运算符为止。 因为用到了两个栈(运算符栈和运算数栈)且这两个栈的基本存储类型还不一样,一个为char类型存储运算符,而另一个为float类型 ...
分类:
其他好文 时间:
2016-04-23 22:55:12
阅读次数:
303
方法一:入队时,将元素压入s1。出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。方法二:入队时,先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐..
分类:
其他好文 时间:
2016-04-22 01:32:27
阅读次数:
195
题目链接:http://poj.org/problem?id=1028 注意: 1、用两个栈来模拟,一个用来存可以返回的,一个用来存可以前进的。 2、visit方法,就要将可以前进的栈清空。 3、back方法,将当前的网页给可以前进的栈,而可以返回的栈出栈一个元素。 4、forward方法,将当前网 ...
分类:
Web程序 时间:
2016-04-20 19:58:29
阅读次数:
155
参考《大话数据结构》P95~96——两栈共享存储空间。 当两个栈的需求空间有相反关系时,也就是一个栈增长时,另一个栈在缩短,可以采用两栈共享空间结构。这是针对两个具有相同数据类型的栈的一个设计技巧。 举个简单的例子: 代码和解释如下(VS2012测试通过): 运行结果: ...
分类:
其他好文 时间:
2016-04-18 22:20:31
阅读次数:
1132