CLRS10.1-6练习 - 用双栈实现队列
2024-09-07 22:41:20
双栈实现队列算法:
分别考虑队列两种操作入队和出队,我们假设使用栈s1 s2,
s1用来模拟入队,s2用来模拟出队
入队:
入队操作直接执行s1.push即可
出队:
代码实现
package hello;
import java.util.*; public class TwoStackOneQueue<E> {
private Stack<E> s1 = new Stack<>();
private Stack<E> s2 = new Stack<>(); public void enqueue(E item){
s1.push(item);
} public E dequeue(){
if (s2.empty()){
if(s1.empty()){
throw new ArrayIndexOutOfBoundsException();
}else{
popS1ToS2();
return s2.pop();
}
}else{
return s2.pop();
}
} private void popS1ToS2(){
while(!s1.empty()){
s2.push(s1.pop());
}
} public static void main(String[] args){
TwoStackOneQueue<Integer> tsoq = new TwoStackOneQueue<>();
for (int i = 0; i < 20; i++){
tsoq.enqueue(i);
}
for (int i = 0; i < 10; i++) {
System.out.println(tsoq.dequeue());
}
for (int i = 20; i < 40; i++){
tsoq.enqueue(i);
}
for (int i = 0; i < 30; i++) {
System.out.println(tsoq.dequeue());
}
}
}
最新文章
- Java/C++之 public、protected、private ; virtual &; abstract
- Java 内存分配全面浅析
- hihocode 1077 : RMQ问题再临-线段树
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
- ArcGIS知乎上有哪些干货可以推荐?
- python多进程共享变量Value使用tips
- 关于NSArray的几种排序:
- Linux Shell 函数返回值
- How To Ask Questions The Smart Way 转
- 第二章 《C++ Primer Plus》
- MongoDB数据库基本命令
- Java框架之Spring(一)
- wordpress升级出错
- USB组合设备 Interface Association Descriptor (IAD)
- 微信 js api[转]
- yii CFormModel中的rules验证机制
- 关于 Vue 方法前面的美元符号
- 【转】如何在ASP.NET 2.0中定制Expression Builders
- 车道线识别/Opencv/传统方法
- ROS学习