package 栈与队列上;
import java.util.LinkedList;
import java.util.Queue;
public class MyStack {
public Queue queue1 = new LinkedList();
public Queue queue2 = new LinkedList();
public int size;
/**
* push方法只能向空的一个队列中添加元素
*
* @param x
*/
public void push(int x) {
if (empty() || !queue1.isEmpty()) {
queue1.offer(x);
} else {
queue2.offer(x);
}
size++;
}
/**
* 两个队列相互倒腾,只对最后一个元素进行特殊处理
*/
public void pop() {
if (!queue1.isEmpty()) {
while (queue2.size() > 1) {
queue2.offer(queue1.poll());
}
queue1.poll();
} else {
while (queue1.size() > 1) {
queue1.offer(queue2.poll());
}
queue2.poll();
}
size--;
}
public int top() {
if (!queue1.isEmpty()) {
while (queue2.size() > 1) {
queue2.offer(queue1.poll());
}
int k = queue1.poll();
queue2.offer(k);
return k;
} else {
while (queue1.size() > 1) {
queue1.offer(queue2.poll());
}
int k = queue2.poll();
queue1.offer(k);
return k;
}
}
public boolean empty() {
return size == 0 ? true : false;
}
public static void main(String[] args) {
MyStack stack = new MyStack();
System.out.println("栈初始大小:" + stack.size);
stack.push(1);
stack.push(2);
stack.push(3);
stack.pop();
stack.push(4);
System.out.println(stack.top());
}
}