该题目比较基础,注意情况分析到位即可。在橘皮算法,王道的书里,也有该基本题。
package 剑指Offer.两个栈模拟队列
import java.util.Stack;
/**
* @program:多线程和IO
* @descripton:
* @author:ZhengCheng
* @create:2021/9/16-21:06
**/
public class TwoStackQueue {
public static void main(String[] args) {
A<Integer> a = new A<>();
a.push(1);
a.push(2);
System.out.println(a.pop());
a.push(31);
a.push(14);
System.out.println(a.pop());
System.out.println(a.pop());
System.out.println(a.pop());
}
}
class A<E> {
private static Stack stack1 = new Stack();
private static Stack stack2 = new Stack();
public void push(int t) {
stack1.push(t);
}
public E pop() {
if (stack2.isEmpty()){
if (stack1.isEmpty()){
return null;
}else {
while (!stack1.isEmpty()){
stack2.push(stack1.pop());
}
return (E) stack2.pop();
}
}else {
return (E) stack2.pop();
}
}
}
该博客介绍了一种基础的算法问题,即如何利用两个栈来模拟队列的操作。在Java中,通过创建两个栈stack1和stack2,实现了push(入队)和pop(出队)操作。当stack2为空时,将stack1的所有元素转移到stack2,然后从stack2进行pop操作,从而达到队列的先进先出特性。示例代码展示了如何在实际中运用这个概念。
331

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



