剑指.(数据结构)栈和队列

139 阅读1分钟

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();
    }
}