代码

/*第一题:编写程序,使用一维数组,模拟栈数据结构。要求:1、这个栈可以存储java中的任何引用类型的数据。2、在栈中提供push方法模拟压栈。(栈满了,要有提示信息。)3、在栈中提供pop方法模拟弹栈。(栈空了,也有有提示信息。)4、编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈的动作。
*/
package com.bjpowernode.javase.day23homework;public class Homework1 {public static void main(String[] args) {MyStack myStack = new MyStack();//压栈try {myStack.push(new A());myStack.push(new A());myStack.push(new A());} catch (StackException e) {e.printStackTrace();}try {myStack.pop();myStack.pop();myStack.pop();} catch (StackException e) {e.printStackTrace();}}
}
class A{}
class B{}
class C{}class MyStack{//定义object数组,提供空间压栈弹栈private Object[] objects;//栈帧,永远指向栈顶元素,初始情况object数组没有元素,栈帧指向-1private int index = -1;//poppublic Object pop() throws StackException {//判断栈空否if (index < 0){throw new StackException("栈已空,弹栈失败!");}else{//返回当前元素后,栈帧所指元素进行减一操作System.out.println("弹栈成功," + objects[index]);return objects[index--];}}//pushpublic void push(Object obj)throws StackException{if (index >= objects.length-1){throw new StackException("栈已满,弹栈失败!");}else{//压栈,将引用类型数据压入栈中this.objects[++index] = obj;System.out.println("压栈成功," + obj);}}//constructorpublic MyStack() {//初始默认栈空间为2this(new Object[2]);}public MyStack(Object[] objects) {this.objects = objects;}//setter and getterpublic Object[] getObjects() {return objects;}public void setObjects(Object[] objects) {this.objects = objects;}public int getIndex() {return index;}public void setIndex(int index) {this.index = index;}
}
package com.bjpowernode.javase.day23homework;public class StackException extends Exception{public StackException() {}public StackException(String message) {super(message);}
}

模拟栈数据结构改进版(使用异常)相关推荐

  1. 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法

    目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...

  2. 编写程序,使用一维数组,模拟栈数据结构。 要求: 1、这个栈可以存储java中的任何引用类型的数据。 2、在栈中提供push方法模拟压栈。(栈满了,要有

    代码 /*第一题:编写程序,使用一维数组,模拟栈数据结构.要求:1.这个栈可以存储java中的任何引用类型的数据.2.在栈中提供push方法模拟压栈.(栈满了,要有提示信息.)3.在栈中提供pop方法 ...

  3. Java_基础—用LinkedList模拟栈数据结构的集合并测试

    为了达到更好的封装效果,应该把使用LinkedLIst的方法进行进栈(list.addLast(obj)).弹栈(list.removeLast()).判断栈是否为空(list.isEmpty())封 ...

  4. 用LinkedList方法模拟栈的数据结构

    import java.util.LinkedList; /** * * @author Ginfer * @virsion * HP * linkedlist * HP * 自定义栈集合 * 栈的数 ...

  5. C语言中用链表构建栈讲解,C语言数据结构之使用链表模拟栈的实例

    C语言数据结构之使用链表模拟栈的实例 以下是"使用链表模拟栈"的简单示例: 1. 用C语言实现的版本 #include #include typedef char datatype ...

  6. 数据结构之数组模拟栈

    栈的特点即先进后出,采用数组模拟栈,实现栈的这一特性主要是靠定义一个指针(索引). 指针的初始位置指向的是-1 以下给出代码: package com.ebiz.stack;/*** @author ...

  7. 数据结构 - 栈(数组模拟栈操作)

    数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main( ...

  8. Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP

    单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...

  9. 数组模拟栈和队列板子

    使用数组模拟数据结构栈和队列 栈:后进先出 对于栈:我们使用tt表示栈顶的下标,如果tt==0表示栈空 队列:先进先出 对于队列,我们使用hh表示队首,tt表示队尾,tt初始化为-1,判断队列是否为空 ...

最新文章

  1. 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.11节创建与应用图案...
  2. DAY9-字符串笔记整理2018-1-19
  3. 让bug无处藏身,Java 线上问题排查思路、常用工具
  4. 荣耀V40值得购买吗?玩游戏是一把好手!
  5. c#Process.Start无法启动exe程序的问题
  6. 新闻发布项目——接口类(newsTbDao)
  7. Java最大公约数和最小公倍数的求法(辗转相除法)
  8. AI算法连载16:统计之聚类
  9. 津津的储蓄计划(洛谷-P1089)
  10. Comet4J推技术在SSHE三大框架中应用-linux下亲测可用
  11. angular学习笔记(六)-非入侵式javascript
  12. 360压缩电脑版_震惊!360竟然出了一款这么良心的软件
  13. PAT Basic 1071. 小赌怡情(15)
  14. 2020 中国软件 100 强,腾讯第二、阿里第三,他第一!
  15. 小程序-语音播放动画-animation
  16. Prometheus metric
  17. 指令引用的内存不能为written怎么解决
  18. win10企业版无法访问共享文件夹
  19. BlueKing3-作业平台
  20. Unity异常退出日志存储位置

热门文章

  1. 引入mui后,radio单选框不可点击问题解决
  2. ajax格式,需要指定交互的data类型
  3. 多项新政催生本年度购房最佳“窗口期”
  4. ASP.NET----实现点击按钮或链接弹出登录对话框
  5. 还在使用 Windows?我的70岁母亲都用了 21 年 Linux
  6. 从0到1详解数据挖掘过程
  7. 那天,他无意间瞟了眼程序员的桌面……
  8. Google首席决策师告诉你,AI和数据科学团队需要哪10种角色
  9. 2017 年度书单 Top 10
  10. 五分钟,手撸一个Spring容器!