1.用两个栈实现队列
题目描述:用两个栈来实现一个队列,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和队列头部删除结点的功能,队列中的元素为int类型
解题思路:
栈的特点:后进先出
队列的特点:先进先出
栈A用来作push入队列,栈B用来出队列,当栈B为空时,栈A全部出栈压入栈B,栈B再出栈pop(即出队列)
/** template<typename T> class CQueue{
* public:
* CQueue(void);
* ~CQueue(void);
* void appendTail(Const T& node);
* T deleteHead();
* private:
* Stack<T> stack1;
* Stack<T> stack2;
* };
**/
import java.util.Stack;
public class Solution {
Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
public void appendTail(int node) {
stack1.push(node);
}
public int deleteHead() {
if(stack1.empty()&&stack2.empty()){
return -1;
}if(stack2.empty()){
while(!stack1.empty()){
stack2.push(stack1.pop());
}
}return stack2.pop();
}
}