题目:用两个队列实现栈。思路:可能看了我的《用两个栈实现队列》的那篇文章后,很多人都会想到“反向的反向等于正向”的思想,但“正向的正向还是正向”,因此我们不能用上篇文章的思想。在这里,我们要开动脑筋,另辟蹊径。设有两个队列q1和q2,我们把它看成一个整体,即从..
分类:
其他好文 时间:
2014-09-25 17:27:30
阅读次数:
162
一个笔试题,当时竟然没想出来,现在实现下 1 /* 2 用两个栈实现双端队列 3 栈s1,s2。 4 pushback()和popback(),必须在s2为空的情况,把s2的都放s1中 5 pushfront()和popfront(),必须是在s1为空,把s1的都给放到s2中 6 */ ...
分类:
其他好文 时间:
2014-09-22 02:10:31
阅读次数:
243
用两个栈实现队列的效果,可以入栈,出栈,判空等。。。
实现的栈基本功能
lstack.h
#ifndef _LSTACK_H
#define _LSTACK_H
#include
using namespace std;
// 基于链式表的堆栈
class Stack {
public:
// 构造过程中初始化为空堆栈
Stack (void) : m_top (NULL) {}
/...
分类:
其他好文 时间:
2014-09-15 22:56:39
阅读次数:
481
1 /* 2 * 实现一个队列类,该类用两个栈来实现 3 * 队列和栈的主要区别是,队列是先进先出,就像我们在食堂[派对打饭一样,先到先打 4 * 栈是先进后出,就像枪里面的子弹,最先进去的把压到了最低 5 * 因此我们只要修改一下peek()和pop(),以相反顺序执行操作,我们可以利用...
分类:
其他好文 时间:
2014-09-06 12:25:23
阅读次数:
142
使用两个栈实现一个队列
队列是先进先出的数据结构(FIFO),栈是先进后出的数据结构(FILO),
用两个栈来实现队列的最简单方式是:进入队列则往第一个栈压栈,
出队列则将第一个栈的数据依次压入第二个栈,然后出栈.
两条规则:
1)进队列,则直接压入第一个栈
2)出队列,若果第二个栈不为空,直接pop(),如过第二个栈为空,
则把第一个栈中的数据全部压入第二个栈(第一个栈此时为空...
分类:
其他好文 时间:
2014-08-27 01:40:37
阅读次数:
230
为实现O(1)的时间复杂度完成取队列中最大元素,使用maxStackItemIndex记录队列(使用两个栈实现)中最大元素下标,使用数组link2NextMaxItem[]记录数组中次大值的下标,这也就是使用两个栈(先进后出)模拟队列二不是直接使用队列(先进先出)的原因:先进后出可以保证当执行p.....
分类:
其他好文 时间:
2014-08-23 13:57:40
阅读次数:
205
思路:用两个栈,一个用于接收(in),一个用于输出(out),输出前如果out为空需要将in中的数据导入out。import java.util.Stack;//用两个stack设计一个队列 p142public class MyQueue { Stack in; Stack out; ...
分类:
其他好文 时间:
2014-08-20 01:22:06
阅读次数:
204
本题要求模拟浏览器的前进、后退等操作。用两个栈实现,一个控制前进,一个控制后退。在前进与后退操作中,从一个栈中弹出栈顶元素,压入另一个栈中。当打开一个新网页时,将前进栈清空。代码如下:#include #include #include #include #include #include #inc...
分类:
其他好文 时间:
2014-08-06 21:59:02
阅读次数:
230
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12817解题报告:定义两种运算符号,一种是>>,就是右移,另一种是S,S = (X^2) % (1e9+7);跟其它表达式求值一样,用两个栈,一个存操作数,另一个存操作符,有一个问...
分类:
其他好文 时间:
2014-07-22 22:50:14
阅读次数:
261
原理:
假设有两个栈分别叫stack1,stack2。那么入队操作就是向stack1中push元素,出队操作就是将stack1中的所有元素pop出来,然后push到stack2中,对stack2进行pop操作。
题目:
题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型。
输入:
...
分类:
其他好文 时间:
2014-07-21 13:33:06
阅读次数:
203