Java怎么用两个栈实现队列和用两个队列实现一个栈
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Java怎么用两个栈实现队列和用两个队列实现一个栈",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java怎么用两个栈实现队列和用两
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
云南咖啡
湖北九亚互联网络科技有限公司
上海卓越科技互联网
中国互联网科技工作委员会毛军
互联网科技公司的优势
互联网 卓越科技
互联网 科技创业
紫鲸互联网科技
亿策互联网科技
互联网金融科技平台
郑州华宇互联网科技
广州紫鲸互联网科技
长亮科技 互联网金融
互联网科技公司做什么
阿里巴巴算科技企业还是互联网
佳云科技和互联网广告
互联网科技和信息
中国科技创新与世界互联网大会
科技互联网的核心竞争力
艺电能源互联网科技有限公司招聘
花魁咖啡
广州大一互联网络科技有限公司
丰台科技园 互联网
互联网科技咨询
居家互联网科技有限公司
南平创想时代互联网科技有限公司
四川慕妮娅互联网科技有限公司
互联网数据科技专业
昆明中奇联合互联网科技
10位科技互联网大佬