题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。
队列中的元素为int类型
package com.offer.chapter_2;
import java.util.Scanner;
class Stack<E> {
private Object[] elem = new Object[100001];
private int top = 0;
public boolean isEmpty() {
return top == 0;
}
public int size() {
return top;
}
public E pop() {
return (E)elem[--top];
}
public void push(E val) {
elem[top++] = val;
}
}
class Queue<E> {
private Stack<E> stackPush = new Stack<E>();
private Stack<E> stackPop = new Stack<E>();
private int size() {
return stackPush.size() + stackPop.size();
}
public void push(E val) {
stackPush.push(val);
}
public boolean isEmpty() {
return size() == 0;
}
public E pop() {
if(!stackPop.isEmpty()) {
return stackPop.pop();
}
while(!stackPush.isEmpty()) {
stackPop.push(stackPush.pop());
}
return stackPop.pop();
}
}
/**
* @author hadoop
*
* 用两个栈来实现一个队列,完成队列的Push和Pop操作。
*
*/
public class Interviews_7 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();
scanner.nextLine();
Queue<Integer> queue = new Queue<Integer>();
while(num -- > 0) {
String line = scanner.nextLine();
String strs[] = line.split(" ");
if(strs[0].equals("PUSH")) {
queue.push(Integer.parseInt(strs[1]));
} else if(strs[0].equals("POP")) {
if(queue.isEmpty()) {
System.out.println("-1");
} else {
System.out.println(queue.pop());
}
}
}
}
}