使用栈实现队列
程序员文章站
2022-04-27 15:09:47
...
思路: 思路比较简单,使用两个栈,一个栈A负责入队,一个栈B负责出队,出队的时候,先判断栈B的元素是否为空,如果为空则将栈A的元素全部出栈放入栈B中,然后栈B元素出栈
代码:
package com.buka.designer.statkqueue;
import java.util.Stack;
/**
* 用栈实现队列
*/
public class StackQueue {
private Stack<Integer> stackA = new Stack<>();
private Stack<Integer> stackB = new Stack<>();
/**
* 入队操作
*/
public void enQueue(int item) {
stackA.push(item);
}
/**
* 出队操作
*
*/
public Integer deQueue() {
if (stackB.isEmpty()) {
if (stackA.isEmpty()) {
return null;
}
transfer();
}
return stackB.pop();
}
/**
* 转换
*/
public void transfer () {
while (!stackA.isEmpty()) {
stackB.push(stackA.pop());
}
}
public static void main(String[] args) {
StackQueue stackQueue = new StackQueue();
stackQueue.enQueue(1);
stackQueue.enQueue(2);
stackQueue.enQueue(3);
stackQueue.enQueue(4);
System.out.println(stackQueue.deQueue());
System.out.println(stackQueue.deQueue());
stackQueue.enQueue(5);
System.out.println(stackQueue.deQueue());
System.out.println(stackQueue.deQueue());
System.out.println(stackQueue.deQueue());
System.out.println(stackQueue.deQueue());
}
}
上一篇: Python学习-Scipy库统计操作(随机变量、概率密度、累积分布密度、期望、方差、描述性统计(最大最小值、均值、方差、偏差、峰度)、核密度估计)
下一篇: HTML5/CSS3翻转动画(二)
推荐阅读
-
使用hibernate的criteria实现统计数量及多表查询
-
c# 使用Task实现非阻塞式的I/O操作
-
php如何使用mcrypt实现加密解密实例代码详解
-
QT界面 使用QStyledItemDelegate QPainter QStyleOptionViewItem QModelIndex组合实现项的绘制
-
C#使用Shader实现夜幕降临倒计时的效果
-
使用C#发送Http请求实现模拟登陆实例
-
使用Node.js实现压缩和解压缩功能
-
使用 PHP 消息队列实现 Android 与 Web 通信
-
怎样使用JS实现json对象数组按对象属性排序
-
详细介绍javascript使用prototype实现OOP继承的方法