这两天复习了一下数据结构 就想到当时老师有讲过用两个栈实现一个队列 当时好像没听懂。。。
现在想想当时真是不好好学习啊 这么简单都不明白
无非就是用栈实现两次push 就完事了
import java.util.Stack;
/**
* 两个栈实现一个队列
* 存入的元素存在stack1中
* 当需要取元素时 将stack1的元素全部push入stack 取stack2的元素
* 两倒序即为正序 达到队列的效果
* @author Administrator
*
*/
public class Stack2Queue {
private Stack stack1;
private Stack stack2;
public Stack2Queue(){
stack1 = new Stack<>();
stack2 = new Stack<>();
}
/**
* 插入新元素
* 入队
* @param o
*/
public void enQueue(Object o){
stack1.push(o);
}
/**
* 出队
* @return
*/
public Object deQueue(){
if(stack2.size()>0){
return stack2.pop();
}
// 当stack2中没有元素时 将stack1 push入stack2
else if(stack1.size()>0){
while(stack1.size()>0){
stack2.push(stack1.pop());
}
return stack2.pop();
}
else
return "ERROR";
}
/**
* 队列的元素个数
* @return
*/
public int size(){
return stack1.size()+stack2.size();
}
public static void main(String[] args) {
Stack2Queue sq = new Stack2Queue();
sq.enQueue(1);
sq.enQueue(2);
sq.enQueue(3);
int size = sq.size();
for(int i = 0;i<size; i++){
System.out.println(sq.deQueue());
}
}
}