当前位置:网站首页>如何用栈实现队列
如何用栈实现队列
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();
}
}
边栏推荐
猜你喜欢
随机推荐
转载-文件资源管理器无响应的解决办法
SVM Support Vector Machine - Application of MATLAB in Mathematical Modeling
基于FTP协议的文件上传与下载
Data Fitting Methods Application of MATLAB in Mathematical Modeling (Second Edition)
【Postgraduate Work Weekly】(Week 5)
机器学习的基本术语
软件测试面试题--银行面试
Detailed Explanation of Software Secure Memory Area
主成分分析——MATLAB在数学建模中的应用(第2版)
堆(heap)系列_0x04:堆的内部结构(_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
灰色关联分析
unity shader 入门 全透明与半透明效果实现
软件测试工具清单
事务的隔离级别
Unity Shader 透视效果/XRay
weiteUP-ciscn_2019_c_1
堆(heap)系列_0x09:堆破坏示例(非法访问+未初始化+堆句柄不匹配)
【SQL】595. 大的国家
【力扣】593. 有效的正方形
Makefile通用模板









