当前位置:网站首页>如何用栈实现队列
如何用栈实现队列
2022-08-09 15:01:00 【鸣筝鸣筝】
队列遵循先进先出(FIFO)原则,栈遵循后进先出(LIFO)原则。如果用栈来实现队列则需要用俩个栈来模拟队列进而实现队列的先进先出(FIFO)原则。步骤如下:
(1)创建俩个栈一个进行入栈操作Stack<E> in,一个进行出栈操作Stack<E> out
(2)队列的特点为先进先出所以要求栈in进,栈out出
(3)入队时要保证栈out为空,所以先判断栈out是否为空,若不为空则将栈out中的元素全部存入栈in中 in.push(out.pop())
(4)出队时要保证栈in为空,所以先判断栈in是否为空,若不为空则将栈in中的元素全部存入栈out中 out.push(in.pop())
代码实现:
import java.util.Stack;
public class Test01 {
public static void main(String[] args) {
MyQueue<String> queue=new MyQueue();
queue.offer("A1");
queue.offer("A2");
queue.offer("A3");
queue.offer("A4");
System.out.println(queue.poll()+"出队");
}
}
//栈模拟队列
class MyQueue<E>{
private Stack<E> in =new Stack<E>();
private Stack<E> out =new Stack<E>();
//入队
public void offer(E e) {
while(!out.isEmpty()) {
in.push(out.pop());
}
in.push(e);
}
public boolean isEmpty() {
return in.size()==0&&out.size()==0;
}
//出队
public E poll() {
while(!in.isEmpty()) {
out.push(in.pop());
}
return out.pop();
}
}
边栏推荐
猜你喜欢
随机推荐
杭州富阳科目三考试
【力扣】207. 课程表
规划问题的MATLAB求解——MATLAB在数学建模中的应用(第2版)
软件安全基本概念
Basic Concepts of Software Security
Face recognition sample code analysis (2) - face recognition analysis
Vim实用技巧_2.普通模式和插入模式
在任务管理器中结束任务进程之后电脑直接黑屏了
Principal Component Analysis - Applications of MATLAB in Mathematical Modeling (2nd Edition)
Analytic Hierarchy Process (AHP) - Applications of MATLAB in Mathematical Modeling (2nd Edition)
websocket协议详解
idea 用不了Ctrl+Shift+F快捷键全局搜索。
GStreamer应用开发手册学习笔记之二
Vim实用技巧_3.可视模式和命令模式
Candide3 face animation model
图论最短路径求解
软件测试面试题--银行面试
面试经历(华为,瑞晟,大华,海康,虹软,顺丰)
【SQL】595. 大的国家
关于sql语句中union和or的区别