使用队列结构实现栈结构
【图示】
【代码】
import java.util.LinkedList;
import java.util.Queue;
public class Queue_to_Stack {
// 初始化成员变量
private Queue<Integer> queue;
private Queue<Integer> help;
// 构造方法,初始化作用
public Queue_to_Stack() {
queue = new LinkedList<Integer>();
help = new LinkedList<Integer>();
}
// 模拟栈,压入数字
public void push(int push) {
queue.add(push);
}
// 模拟栈,弹出数字,先进后出
public int pop() {
if (queue.isEmpty()) {
throw new RuntimeException("The queue is empty!");
}
while(queue.size() > 1) { // queue只留1个数字,剩下的都放在help栈中
help.add(queue.poll());
}
int res = queue.poll() ;
swap();
return res;
}
// 交换2个指向队列的引用
public void swap() {
Queue<Integer> tmp = help;
help = queue;
queue = tmp;
}
// 获取栈顶
public int peek() {
if (queue.isEmpty()) {
throw new RuntimeException("Stack is empty!");
}
while (queue.size() != 1) {
help.add(queue.poll());
}
int res = queue.poll();
help.add(res);
swap();
return res;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}