队列和栈相互实现
Posted *平芜尽处是春山*
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列和栈相互实现相关的知识,希望对你有一定的参考价值。
力扣225.用队列实现栈
1、使用一个队列
class MyStack
Queue<Integer> queue;
public MyStack()
queue = new LinkedList<Integer>();
public void push(int x)
int n = queue.size();
queue.offer(x);
for (int i = 0; i < n; i++)
queue.offer(queue.poll());
public int pop()
return queue.poll();
public int top()
return queue.peek();
public boolean empty()
return queue.isEmpty();
运行截图:
2、使用两个队列
public class MyStack
private Queue<Integer> queue1=new LinkedList<>();
private Queue<Integer> queue2=new LinkedList<>();
public void push(int x)
queue2.offer(x);
while(! queue1.isEmpty())
queue2.offer(queue1.poll());
Queue<Integer> tmp=queue1;
queue1=queue2;
queue2=tmp;
public int pop()
return queue1.poll();
public int top()
return queue1.peek();
public boolean empty()
return queue1.isEmpty();
运行截图:
力扣232.用栈实现队列(使用两个栈)
public class MyQueue
private Stack<Integer> s1;
private Stack<Integer> s2;
public MyQueue()
s1=new Stack<>();
s2=new Stack<>();
public void push(int x)
if(s1.isEmpty())
s1.push(x);
else
while(! s1.isEmpty())
s2.push(s1.pop());
s1.push(x);
while(! s2.isEmpty())
s1.push(s2.pop());
public int pop()
return s1.pop();
public int peek()
return s1.peek();
public boolean empty()
return s1.isEmpty();
运行截图:
以上是关于队列和栈相互实现的主要内容,如果未能解决你的问题,请参考以下文章