首页

文章

怎样用2个栈实现队列(java)

发布网友 发布时间:2022-04-20 04:51

我来回答

3个回答

热心网友 时间:2023-07-16 02:48

入栈:入队列1
出栈:把队列1的前n-1个元素倒到队列2,把2中第n个元素出队。下次出栈,因为此时数据在2中,则对2进行类似的操作。
具体如下:
元素为:A,B,C,3个,入栈后队列1中元素为A,B,C,队列2中为空,第一次pop,将队列1中前n-1个元素(n=3)出队,入队列2,剩下的第n个元素C出队显示,这时队列1中为空,队列2中A,B;第二次pop,将队列2中前n-1个元素(n=2)出队,入队列1,剩下的第n个元素B出队显示,这时队列1中为A,队列2中空,第三次pop,剩下的一个元素A出队显示,队列1、2都空,结束。

热心网友 时间:2023-07-16 02:48

你是排队的还是还是模拟堆栈啊?
排队:用集合,先进先出
package Test;

import java.util.ArrayList;
import java.util.List;

public class Queue {
// 实例化一个集合对象
private List list = new ArrayList();
private int size;// 存放元素个数
private int number = 0;// 用于存放下标

/**
* 定义获取元素个数的方法
*
* @return 返回集合大小
*/
public int getSize() {
size = list.size();
return size;
}

/**
* 定义一个进入队伍的方法
*
* @param obj
*/

public void add(Object obj) {
list.add(obj);
}

/**
* 出队方法
*
* @return 返回出来的Object
*/
public Object remove() {
// 先进先出,先进先出从下标0开始
if (number > getSize()) {
System.out.println("已经没有要出的队了!!!");
return 0;
}
Object temp = list.remove(number);
return temp;
}

/**
* 输出
*/
public void prlntlnFormat() {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < list.size(); i++) {
buffer.append(list.get(i) + "\t");
}
System.out.println(buffer);
}

public static void main(String[] args) {
Queue test = new Queue();
// 进队
test.add(1);
test.add(2);
test.add(3);
test.add(4);
test.add(5);
test.add(6);
test.add(7);
test.add(8);
test.prlntlnFormat();// 输出
System.out.println("出来的队伍是:" + test.remove());// 出队
test.prlntlnFormat();
}
}
堆栈:用集合,同理,先进后出
package Test;

import java.util.ArrayList;
import java.util.List;

public class TestStack {
// 实例化一个集合
private List list = new ArrayList();
private int size;// 得到集合的长度
/**
* 定义一个方法取得集合的长度
* @return 获的集合大小
*/
public int getSize() {
size = list.size();
return size;
}

/**
* 取栈顶元素
* @return 返回栈顶的值
*/
public Object getTop() {
// 第一个栈的对象的下标等于集合长度减1
Object obj = list.get(getSize() - 1);
return obj;
}

/**
* 进栈方法
* @param obj 提供一个元素
*/
public void push(Object obj) {
list.add(obj);// 添加任意类型
}
/**
* 出栈,先进后出
* @return 并返回出来的栈
*/
public Object pop()
{
//获得要出栈的下标
int number = list.size() - 1;
//出栈
Object obj = list.remove(number);
return obj;
}
//打印
public void print()
{
StringBuffer buffer = new StringBuffer();
for(int i = 0;i < list.size();i++)
{
buffer.append(list.get(i));
buffer.append("\t");
}
System.out.println(buffer);
}

//测试类
public static void main(String[] args) {
TestStack test = new TestStack();
//添加几个栈
test.push(1);
test.push(2);
test.push(3);
test.push(4);
test.print();
//取栈顶
System.out.println("栈顶为"+test.getTop());
//出栈
System.out.println("取出的栈为:"+test.pop());
System.out.println("栈的长度为:"+test.getSize());
test.print();
}
}

热心网友 时间:2023-07-16 02:49

没看懂问题追问就是给你一个class stack;
有两个method, push和pop (FILO)
要你用2个stack来编写一个class queue, 实现queue的push和pop (FIFO)

同理, 如果给你一个class queue (FIFO)
能不能实现stack的push和pop (FILO)

八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 栈和队列的应用 C++数据结构 栈和队列的实现和应用 数据结构问题栈与队列的基本操作 四则运算用队列代替栈是否可行?怎么实现?如果不行,... 2.(1)用两个栈实现一个队列.用两个队列实现一个栈。 栈与队列的实现(java) 1.利用队列的基本操作实现栈的逆置 2.利用队列的基... 手机桌面怎么设置什么什么时间 求助高手 关于数据结构栈与队列的实现 时间日期怎么设置显示在手机桌面? 从时间复杂度和空间复杂度的两个方面同时分析一下... 手机桌面的时间怎么设置 用队列和栈实现元素的逆值 利用队列的基本操作,实现栈的逆置,写一算法 怎样用两个队列实现一个栈的功能 如何用数组实现队列和栈 c语言实现队列和栈的方法 如何用一个栈实现队列,如何用一个队列实现栈 Java:如何用两个队列实现栈 如何用队列实现栈 栈和队列数据结构的特点,什么情况下用到栈,什么情... 小米9手机黑屏,按键无反应,充电无反应,放两天,... 线切割是干什么的? 怎么学线切割? 如何正确的安全操作线切割机及故障处理? 线切割机的操作规程 线切割机床的操作规程 线切割机床都有哪些安全操作规程? 如何使用数控线切割机床 线切割机床的操作加工有什么技巧分析? 线切割机床的操作步骤 线切割机的安全操作规程是什么? 线切割如何绕丝图解 线切割机床操作要注意哪些细节 电火花线切割的操作步骤和注意事项 越详细越好 慢走丝线切割机都有哪些安全规范操作事项? 请问,电脑与打印机怎样插线?有几处?拜托帮忙? 打印机的线该插主机的哪个位置 评剧《并非是儿臣以小犯上》的词? 乾坤带歌词是怎样的?
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com