Java怎么用两个栈实现队列和用两个队列实现一个栈
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要讲解了"Java怎么用两个栈实现队列和用两个队列实现一个栈",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java怎么用两个栈实现队列和用两
千家信息网最后更新 2025年12月02日Java怎么用两个栈实现队列和用两个队列实现一个栈
这篇文章主要讲解了"Java怎么用两个栈实现队列和用两个队列实现一个栈",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java怎么用两个栈实现队列和用两个队列实现一个栈"吧!
import java.util.ArrayList;import java.util.List;import java.util.Stack; /* * Q 57 用两个栈实现队列 */public class QueueImplementByTwoStacks { private Stack stack1; private Stack stack2; QueueImplementByTwoStacks(){ stack1=new Stack(); stack2=new Stack(); } public Integer poll(){ Integer re=null; if(!stack2.empty()){//如果stack2不为空则弹出栈顶元素 re=stack2.pop(); }else{//如果stack2为空,将stack1中的元素弹出,依次压栈到stack2中,那么stack1栈底的元素就会成为stack2栈顶的元素,从而达到stack1先进先出的队列顺序 while(!stack1.empty()){ re=stack1.pop(); stack2.push(re); } if(!stack2.empty()){ re=stack2.pop(); } } return re; } public Integer offer(int o){//每次只从stack1压栈 stack1.push(o); return o; } public static void main(String[] args) { QueueImplementByTwoStacks queue=new QueueImplementByTwoStacks(); List re=new ArrayList(); queue.offer(1); queue.offer(2); queue.offer(3); re.add(queue.poll()); queue.offer(4); re.add(queue.poll()); queue.offer(5); re.add(queue.poll()); re.add(queue.poll()); re.add(queue.poll()); System.out.println(re.toString()); }} import java.util.LinkedList;/* * Q 57 用两个队列实现一个栈 */public class StackImplementByTwoQueues { //use 'queue1' and 'queue2' as a queue.That means only use the method 'addLast' and 'removeFirst'. private LinkedList queue1; private LinkedList queue2; StackImplementByTwoQueues(){ queue1=new LinkedList(); queue2=new LinkedList(); } public Integer pop(){//队列1不为空,队列2为空,将队列顺序读到队列2中,则最后一个元素就是需要弹出的值 Integer re=null; if(queue1.size()==0&&queue2.size()==0){ return null; } if(queue2.size()==0){ while(queue1.size()>0){ re=queue1.removeFirst();//等同re=queue1.remove(); if(queue1.size()!=0){//do not add the last element of queue1 to queue2 queue2.addLast(re); } } }else if (queue1.size()==0){ while(queue2.size()>0){ re=queue2.removeFirst(); if(queue2.size()!=0){//do not add the last element of queue2 to queue1 queue1.addLast(re); } } } return re; } public Integer push(Integer o){ if(queue1.size()==0&&queue2.size()==0){ queue1.addLast(o);//queue2.addLast(o); is also ok } if(queue1.size()!=0){ queue1.addLast(o);//等同queue1.=add(0) }else if(queue2.size()!=0){ queue2.addLast(o); } return o; } public static void main(String[] args) { StackImplementByTwoQueues stack=new StackImplementByTwoQueues(); int tmp=0; stack.push(1); stack.push(2); stack.push(3); tmp=stack.pop(); System.out.println(tmp);//3 stack.push(4); tmp=stack.pop(); System.out.println(tmp);//4 tmp=stack.pop(); System.out.println(tmp);//2 stack.push(5); stack.push(6); tmp=stack.pop(); System.out.println(tmp);//6 tmp=stack.pop(); System.out.println(tmp);//5 tmp=stack.pop(); System.out.println(tmp);//1 }} 感谢各位的阅读,以上就是"Java怎么用两个栈实现队列和用两个队列实现一个栈"的内容了,经过本文的学习后,相信大家对Java怎么用两个栈实现队列和用两个队列实现一个栈这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
队列
两个
元素
学习
内容
就是
顺序
先进
思路
情况
文章
更多
知识
知识点
篇文章
跟着
问题
先出
实践
推送
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库字段的基本属性有哪四种
威海金财网络技术有限公司
网络技术管理员考试
大学生网络安全小品
计算机软件开发P6
安卓远程启动服务器下载
互联网软件开发工作薪资
数据库中存jeson字段
http和反向代理服务器
石狮软件开发公司
江西联泽互联网科技
数据库技术可以干什么
图片服务器源码
普陀区微型软件开发设计标准
幼儿园网络安全教育目标
台湾苹果软件开发公司
软件开发年度计划表
软件开发视觉识别
能源行业网络安全白皮书
杭州培训软件开发报价
天玥数据库审计 远程
观于网络安全的画
太仓运营网络技术哪个好
币安怎么无法连接服务器
软件开发到哪里批发
39互娱网络技术
国外网络安全状况
网警具备哪些网络技术
江西专业软件开发服务以客为尊
泰州营销软件开发项目