使用一维数组模拟栈数据结构
admin
2024-03-18 14:12:13
0
package com.javase.进阶.数组;/*** 编写程序,使用一维数组,模拟栈数据结构* 要求:*    1、这个栈可以存储java中的任何类型数据*    2、在栈中提供push方法模拟压栈。(栈满了,要有提示信息)*    3、在栈中提供pop方法模拟弹栈。(栈空了,要有提示信息)*    4、编写测试程序,new栈对象,调用push和pop方法来模拟压栈弹栈的动作*    5、假设栈的默认初始化容量是10(注意无参构造方法的编写)*/
public class MyStackTest {public static void main(String[] args) {
//        初始化栈,默认容量10MyStack myStack = new MyStack();
//        开始压栈
//        采用循环压栈(压栈11次,因为栈的容量是10,多压1次出现压栈失败)for (int i = 1;i <= 11;i++){myStack.push(new Object());}//        栈满后,开始弹栈
//        也采用循环弹栈的方式(弹栈11次,因为栈的容量是10,多弹1次出现弹栈失败)for (int i = 1;i <= 11;i++){myStack.pop();}}
}
//栈类
class MyStack{
//    用数组来模拟栈,为了存储Java中的任何类型对象,需要使用Object[]数组private Object[] elements;
//    栈帧,永远指向栈顶部元素private int index;//    无参构造方法public MyStack() {
//        this();该语法是用来调用本类中的其他构造方法
//        默认初始化容量是10
//        对index初始化 因为0是第一个元素,始化时,栈中没有元素,所以index不等于0,也不能等于1,只能等于-1。this(new Object[10],-1);}//    有参构造public MyStack(Object[] elements, int index) {this.elements = elements;this.index = index;}//    set and get 方法public Object[] getElements() {return elements;}public void setElements(Object[] elements) {this.elements = elements;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}/*** 压栈的方法* @param object 被压栈的元素*/public void push(Object object){//当栈针(数组下标大于等于数组最大下标值的时候,说明数组已满,也就是栈已满)if (index >= elements.length - 1){System.out.println("栈已满,压栈失败!");return;}index++;elements[index] = object;System.out.println("压栈" + object + "成功!栈帧指向:" + index);
//        上面两行代码可以合并成下面一行代码,这里的"++"一定要在"index"之前,表示先自加1后赋值
//        elements[++index] = object;}/*** 弹栈的方法*/public void pop(){if (index <= -1){System.out.println("栈已空,弹栈失败!");return;}System.out.println("成功弹栈" + elements[index] + "!栈帧指向:" + (index - 1));
//        注意:弹栈成功后,对应位置就没有元素了,所以应给一个nullelements[index] = null;
//        弹栈成功后栈针下移一位index--;}
}

相关内容

热门资讯

北京航空材料研究院股份有限公司... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
不差钱且效率持续走低,百普赛斯... 文丨郭小兴编辑丨百进 来源丨新商悟 (本文约为800字) 账上躺着15.3亿元现金,净资产收益率却跌...
开年A股并购重组逾500起 产... 杭州高新区之江工业园 本版供图:图虫创意 证券时报记者 杨霞 2026年开年,A股并购重...
净值波动变大、业绩比较基准修改... [ 2026年以来,农银理财、民生理财、中邮理财、兴银理财等近10家机构相继发布公告,下调旗下多只产...
维尔利:公司董事长变更为李遥 上证报中国证券网讯(邱思雨 记者 操子怡)2月26日晚间,维尔利公告,公司于近日收到董事长李月中递交...
美股七巨头收盘播报|周四(2月... 美股七巨头收盘播报|周四(2月26日),美国科技股七巨头(Magnificent 7)指数跌1.89...
三友医疗业绩快报:2025年度... 上证报中国证券网讯(记者 骆民)三友医疗披露业绩快报。公司2025年实现营业总收入5.43亿元,同比...
京东发布有奖发票活动数据:近8... 来源:新浪科技 新浪科技讯 2月26日下午消息,为落实财政部、商务部、国家税务总局联合部署的有奖发票...
2026存储“超级牛市”仍未结... 来源:经济观察网 经观财经热点 在存储芯片行业迎来超级周期的背景下,知名做空机构香橼研究对美股存储...
中国央行:支持境内银行与境外机... 中新社北京2月26日电 (陶思阅)为提升资本项目开放水平,发展人民币离岸市场,完善跨境资本流动宏观审...
2025年全国经营主体发展向新... 来源:中国金融信息网 新华财经北京2月26日电(记者王悦阳)记者2月26日从市场监管总局获悉,202...
光明日报|通关便利化持续赋能外... 通关便利化持续赋能外贸发展 光明日报记者 张 翼 今年是“十五五”开局之年,为确保外贸开好局起好步,...
原创 明... 2026年2月26日,黄金市场出现了一个极其罕见的信号:国际金价和国内金价正在“分道扬镳”。 就在昨...
金银狂飙 直播间“锁价券”锁住... 来源:滚动播报 (来源:北京商报) 春节假期结束,黄金、白银价格盘中再度走强。截至2月26日20时3...
王剑锋周伟率队赴上海开展经贸交... 王剑锋周伟率队赴上海开展经贸交流活动 深化对接合作 共谋发展新篇 2月26日,2026年常州—上海经...
出售水井坊?帝亚吉欧最新回应:... 【导读】帝亚吉欧管理层表示不会贱卖资产,从未讨论过出售水井坊 中国基金报记者 郑俊婷 在日前召开的2...
原创 几... 几块钱包邮背后的商业逻辑:淘宝、拼多多不亏的秘密 打开淘宝、拼多多,五块九的发卡、九块九的数据线、十...
侃股:AH股溢价有望持续收缩 据报道,公募基金不断买入高折价的AH股中的港股,这有助于降低AH股溢价率。从价值投资的角度看,同股、...
连任仅三个多月,八一钢铁董事长... 柯善良、刘文壮先生因工作原因,辞去公司董事长、总经理职务。公司于2026年2月26日召开第九届董事会...
宇树科技、西门子能源…默茨中国... 来源:澎湃新闻 2月26日下午,正在访华的德国总理默茨在浙江杭州率团参访宇树科技。澎湃新闻(www....