思路:
入栈操作:
- 直接对 queue_1 进行 add 操作
出栈操作:
- 若 queue_1 的长度 > 1,对 queue_1 进行 remove 操作,将这些数据放入 queue_2 中,直到 queue_1 只剩下一个元素为止
- queue_1 剩余的元素即为应该 出栈的元素, remove 操作
- 将 queue_2 中的元素放回到 queue_1 中
大致的示意图:
package com.dataStructure.stack;
import java.util.LinkedList;
import java.util.Queue;
public class UseQueueToImplStack {
private Queue<Integer> queue_1;
private Queue<Integer> queue_2;
private int count;
public UseQueueToImplStack(){
queue_1 = new LinkedList<>();
queue_2 = new LinkedList<>();
count = 0;
}
public boolean isEmpty(){
return count == 0;
}
public void push(int num){
queue_1.add(num);
count++;
}
public int pop(){
while (queue_1.size() > 1)
queue_2.add(queue_1.remove());
int result = queue_1.remove();
count--;
while (!queue_2.isEmpty())
queue_1.add(queue_2.remove());
return result;
}
public static void main(String[] args){
UseQueueToImplStack stack = new UseQueueToImplStack();
stack.push(6);
stack.push(2);
stack.push(1);
System.out.print(stack.pop() + " ");
stack.push(3);
System.out.print(stack.pop() + " ");
stack.push(5);
System.out.print(stack.pop() + " ");
stack.push(7);
while (!stack.isEmpty()){
System.out.print(stack.pop() + " ");
}
}
}