两个栈实现一个队列看这里
本文是两个队列实现一个栈
思路,构造两个队列q1和q2,入栈的时候把元素扔到q1里,
出栈的时候检查q1是否只有一个元素,是的话直接返回就行,
不是的话:
- 将q1中的前n-1个元素放到q2里,
- q1中剩余的一个元素就是该出栈的元素,remove掉,这里需要记录该值,不能直接返回,因为还要对后续q2进行操作。
- q2中全部元素放回q1
相当于q2就是个中转的队列,所有操作都是在q1进行的。
import java.util.LinkedList;
import java.util.Queue;
public class Q2Stack {
Queue<Integer> q1 = new LinkedList<Integer>();
Queue<Integer> q2 = new LinkedList<Integer>();
public static void main(String[] args) {
Q2Stack q= new Q2Stack();
q.push(5);
q.push(3);
q.push(2);
q.remove();
q.remove();
q.remove();
}
public void push(Integer num){
q1.add(num);
}
public void remove(){
Integer res;
if(q1.size() == 1){
res = q1.remove();
System.out.println(res);
return;
}
while(q1.size() > 1){
q2.add(q1.remove());
}
res = q1.remove();
System.out.println(res);
while(q2.size() >=1){
q1.add(q2.remove());
}
}
}
本文介绍了一种使用两个队列实现栈数据结构的方法。核心思路是利用两个队列q1和q2,入栈操作将元素加入q1,而出栈操作通过将q1中的前n-1个元素转移到q2,然后移除q1中剩余的元素来完成。这种方法巧妙地利用了队列的先进先出特性来模拟栈的后进先出行为。
298

被折叠的 条评论
为什么被折叠?



