08双栈实现队列
Posted jun10ng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了08双栈实现队列相关的知识,希望对你有一定的参考价值。
题目
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead?操作返回 -1 )
思路
一个入栈,一个出栈
收获
java的Stack pop方法会返回出栈的值。
代码
class CQueue {
Stack<Integer> appendTailStack;
Stack<Integer> deleteHeadStack;
public CQueue() {
//负责队末插入的栈
appendTailStack =new Stack<>();
//出队的栈
deleteHeadStack = new Stack<>();
//平时存放在出队栈中,顺序如同队列
}
public void appendTail(int value) {
if (deleteHeadStack.empty()) appendTailStack.push(value);
else
{ //先把队push进appendTail栈
while(!deleteHeadStack.empty()){
appendTailStack.push(deleteHeadStack.pop());
}
//插入
appendTailStack.push(value);}
//倒回去
while(!appendTailStack.empty()){
deleteHeadStack.push(appendTailStack.pop());
}
}
public int deleteHead() {
if(deleteHeadStack.empty()) return -1;
int head = deleteHeadStack.pop();;
return head;
}
}
以上是关于08双栈实现队列的主要内容,如果未能解决你的问题,请参考以下文章