用队列实现栈 MyStackWithQueue

mac2022-06-30  21

//用队列实现自己的栈(后进先出),栈用链表实现 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(); } }

 

最新回复(0)