用两个栈实现一个队列的功能
解析:
假设两个栈A和B,且都为空。
可以认为栈A提供入队列的功能,栈B提供出队列的功能。
入队列:入栈A、
出队列:
如果栈B不为空,直接弹出栈B的数据。 如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据。
代码如下:
#include
#i...
分类:
其他好文 时间:
2015-08-03 22:49:21
阅读次数:
184
题目:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deletedHead,分别完成在队列尾部插入节点和在队列头部删除节点的功能。
我们通过一个具体的例子来分析该队列插入和删除元素的过程。首先插入一个元素a,不妨先把它插入到stack1,此时stack1 中的元素有{a},stack2为空。再压入两个元素b和c,还是插入到stack1中,此时stack1中的元素有...
分类:
编程语言 时间:
2015-07-27 21:07:37
阅读次数:
5029
栈和队列常见题型:
实现栈和实现队列。
两个栈实现一个队列。
设计栈,使得pop,push和min时间复杂度为O(1)。
滑动窗口的最大值。
栈的进出序列。...
分类:
编程语言 时间:
2015-07-26 22:45:25
阅读次数:
233
两个栈实现队列两个队列实现堆栈问题,网上有很多资料。这里仅仅是叙述操作方法的介绍觉得至少。两个栈实现一个队列思想:假设两个栈分别为s1,s2。对s1进行入队,出队时,先推断s2是否为空,假设是则将s1中元素压入s2并弹出最上面元素,假设不是,则直接弹出s2最上面的元素。EnQueue(s1,s2,k...
分类:
编程语言 时间:
2015-07-25 21:14:51
阅读次数:
120
题目:用两个栈实现一个队列。请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入节点和在队列头部删除结点的功能。队列的声明如下:template class CQueue{public: CQueue(void); ~CQueue(void); // 在队列末尾添加一...
分类:
其他好文 时间:
2015-07-21 12:00:18
阅读次数:
118
用两个栈实现一个队列的功能。解题思路假设两个栈A和B,且都为空。
栈A提供push()功能,栈B提供pop()功能。
入队列:入栈A。
出队列:
如果栈B不为空,直接弹出B的元素。
如果栈B为空,则依次弹出栈A的元素并压入栈B中,再弹出B中的元素。
实现代码#include
#include
using namespace std;template<clas...
分类:
其他好文 时间:
2015-07-20 21:37:21
阅读次数:
101
LeetCode上面的一道题目,原文如下:
Implement the following operations of a queue using stacks.
push(x) -- Push element x to the back of queue.pop() -- Removes the element from in front of queue.peek() -- G...
分类:
其他好文 时间:
2015-07-14 11:23:27
阅读次数:
131
栈的特点是“先进后出”,队列的特点是“先进先出”;向队列中依次添加元素n、m,当删除时,先删除应该是n;向栈1中添加元素n、m,当要删除时,把栈1的元素添加到栈2中,元素n刚好位于栈顶,n就会被先删除,正好实现了队列的特点。代码如下,已测。public class Queue { private Stack stackOne=new Stack();
p...
分类:
其他好文 时间:
2015-06-05 15:47:15
阅读次数:
143
【题目】用两个栈实现一个队列,分别完成在队列尾部插入结点和在队列头部删除结点的功能。【分析】假设两个栈,栈1和栈2,来实现队列,栈1用来入队,栈2用来出队。
入队时,将元素全部压入栈1;
出队时,如果栈2不为空,就直接pop栈2,否则,就将栈1的所有元素pop到栈1里,再把栈2栈顶弹出。
由图所示,abcdef依次入队,压栈,出队时先将元素从s1弹出,压入s2,从s2出栈实现出队,即使后面再有...
分类:
其他好文 时间:
2015-05-27 10:23:41
阅读次数:
166