큐 (225) 스택에 구현
다음 스택을 사용하여 큐 구현 :
푸시 (X) - 스택 위에 X 요소
팝업 () - 스택의 상단 제거
상단 () - 상단의 요소를 가져옵니다
(빈) - 반환 스택이 비어
참고 :
/ 다시 들여다이며, 푸시에서 팝업 - 당신은 기본 큐의 작업을 사용할 수 있습니다 앞, 크기, 이러한 작업은 합법적으로 비어 있습니다.
당신이 대기열을 지원하지 않을 수 있습니다 사용하는 언어입니다. 당신은 큐, 표준에 대한 작업만큼 큐를 시뮬레이션 할 목록이나 양단 큐 (양단 큐)를 사용할 수 있습니다.
당신은 모든 작업 (예를 들어, 빈 스택에 팝업 작동이나 상단 호출하지 않습니다) 유효하다고 가정 할 수있다.
class MyStack {
private Queue<Integer> a;//输入队列
private Queue<Integer> b;//输出队列
public MyStack() {
a = new LinkedList<>();
b = new LinkedList<>();
}
public void push(int x) {
a.offer(x);
// 将b队列中元素全部转给a队列
while(!b.isEmpty())
a.offer(b.poll());
// 交换a和b,使得a队列没有在push()的时候始终为空队列
Queue temp = a;
a = b;
b = temp;
}
public int pop() {
return b.poll();
}
public int top() {
return b.peek();
}
public boolean empty() {
return b.isEmpty();
}
}
/**
* Your MyStack object will be instantiated and called as such:
* MyStack obj = new MyStack();
* obj.push(x);
* int param_2 = obj.pop();
* int param_3 = obj.top();
* boolean param_4 = obj.empty();
*/