算法导论10.1-7习题解答(用两个队列实现一个栈)
2011-04-16 15:26
281 查看
CLRS 10.1-7 :
说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。
解法:
1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。
2.现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。
3.如果继续做push操作,比如插入d,f,则把d,f插入到q2中,
4.此时若要做pop操作,则做步骤2
5.以此类推,就实现了用两个队列来实现一个栈的目的。
注意在此过程中,新push进来的元素总是插入到非空队列中,空队列则用来保存pop操作之后的那些元素,那么此时空队列不为空了,原来的非空队列变为空了,总是这样循环。
对于push和pop操作,其时间为O(n).
说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。
解法:
1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。
2.现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。
3.如果继续做push操作,比如插入d,f,则把d,f插入到q2中,
4.此时若要做pop操作,则做步骤2
5.以此类推,就实现了用两个队列来实现一个栈的目的。
注意在此过程中,新push进来的元素总是插入到非空队列中,空队列则用来保存pop操作之后的那些元素,那么此时空队列不为空了,原来的非空队列变为空了,总是这样循环。
对于push和pop操作,其时间为O(n).
相关文章推荐
- 算法导论10.1-2习题解答(用一个数组实现两个栈)
- 算法导论10.1-6习题解答(用两个栈实现一个队列)
- 算法导论10.1-6习题解答(用两个栈实现一个队列)
- 算法导论10.1-7习题解答(用两个队列实现一个栈)
- 算法导论学习10.1 两个栈共享一个数组 and 两个栈实现一个队列 and 两个队列实现一个栈
- 算法导论 用两个队列实现一个栈 10.1-7
- 用两个栈实现一个队列 (CLRS 10.1-6)
- 10.1-7 两个队列实现一个栈
- 10.1-6 两个栈实现一个队列
- 算法导论基础篇:两个栈实现一个队列
- 算法导论10.1-5习题解答(deque实现源码)
- 用两个队列实现一个栈 算法导论10.1-7答案
- 算法导论 使用两个队列实现一个栈
- 算法导论基础篇:两个队列实现一个栈
- 两个栈来实现一个队列的C++代码(某公司社会早笔试题)
- 两个栈实现一个队列,并实现队列入队、出队、取队头、取队尾相关操作
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
- 用两个栈实现队列和用两个队列实现一个栈
- 面试题7:用两个队列实现一个栈
- 剑指offer面试题java实现之题7:用两个栈模拟一个队列的入队和出队操作