//用队列实现自己的栈(后进先出),栈用链表实现
public class MyStackWithQueue {
//为啥用链表
private Queue<Integer> queue=new LinkedList<>();
//接口引用指向实现类对象
public void push(int x){
//尾插
queue.add(x);
}
public int pop(){
//先处理size-1个数,转圈圈,把它们拿出来在尾插,在删头部数
//删除最后一个进来的数,也就是栈顶元素
int size=queue.size();
for(int i=0;i<size-1;i++) {
queue.add(queue.poll());
}
return queue.poll();
}
public int top(){
//先处理size-1个数,把它们拿出来在尾插,在删头部数
int size=queue.size();
for(int i=0;i<size-1;i++) {
queue.add(queue.poll());
}
//return queue.peek();不但要查看这个数还要把这个数放回原来的位置,不然下次尾插就乱套了
int v=queue.poll();
queue.add(v);
//这样列表又回到原来的样子了
return v;
}
public boolean empty() {
return queue.isEmpty();
}
}