模拟栈数据结构改进版(使用异常)
代码
/*第一题:编写程序,使用一维数组,模拟栈数据结构。要求: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);}
}
模拟栈数据结构改进版(使用异常)相关推荐
- 【java进阶06:数组】使用一维数组模拟栈数据结构 使用二维数组模拟酒店,酒店管理系统 Arrays工具类 冒泡排序算法、选择排序算法、二分法
目录 数组 二维数组 总结 作业 Arrays工具类 数组 数组总结 及 静态初始化一维数组 /* Array:1.java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object ...
- 编写程序,使用一维数组,模拟栈数据结构。 要求: 1、这个栈可以存储java中的任何引用类型的数据。 2、在栈中提供push方法模拟压栈。(栈满了,要有
代码 /*第一题:编写程序,使用一维数组,模拟栈数据结构.要求:1.这个栈可以存储java中的任何引用类型的数据.2.在栈中提供push方法模拟压栈.(栈满了,要有提示信息.)3.在栈中提供pop方法 ...
- Java_基础—用LinkedList模拟栈数据结构的集合并测试
为了达到更好的封装效果,应该把使用LinkedLIst的方法进行进栈(list.addLast(obj)).弹栈(list.removeLast()).判断栈是否为空(list.isEmpty())封 ...
- 用LinkedList方法模拟栈的数据结构
import java.util.LinkedList; /** * * @author Ginfer * @virsion * HP * linkedlist * HP * 自定义栈集合 * 栈的数 ...
- C语言中用链表构建栈讲解,C语言数据结构之使用链表模拟栈的实例
C语言数据结构之使用链表模拟栈的实例 以下是"使用链表模拟栈"的简单示例: 1. 用C语言实现的版本 #include #include typedef char datatype ...
- 数据结构之数组模拟栈
栈的特点即先进后出,采用数组模拟栈,实现栈的这一特性主要是靠定义一个指针(索引). 指针的初始位置指向的是-1 以下给出代码: package com.ebiz.stack;/*** @author ...
- 数据结构 - 栈(数组模拟栈操作)
数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main( ...
- Acwing算法基础课学习笔记(四)--数据结构之单链表双链表模拟栈模拟队列单调栈单调队列KMP
单链表 算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题.双链表用于优化某些问题. 利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联. 需要注 ...
- 数组模拟栈和队列板子
使用数组模拟数据结构栈和队列 栈:后进先出 对于栈:我们使用tt表示栈顶的下标,如果tt==0表示栈空 队列:先进先出 对于队列,我们使用hh表示队首,tt表示队尾,tt初始化为-1,判断队列是否为空 ...
最新文章
- 《Adobe Illustrator CS6中文版经典教程(彩色版)》—第0课0.11节创建与应用图案...
- DAY9-字符串笔记整理2018-1-19
- 让bug无处藏身,Java 线上问题排查思路、常用工具
- 荣耀V40值得购买吗?玩游戏是一把好手!
- c#Process.Start无法启动exe程序的问题
- 新闻发布项目——接口类(newsTbDao)
- Java最大公约数和最小公倍数的求法(辗转相除法)
- AI算法连载16:统计之聚类
- 津津的储蓄计划(洛谷-P1089)
- Comet4J推技术在SSHE三大框架中应用-linux下亲测可用
- angular学习笔记(六)-非入侵式javascript
- 360压缩电脑版_震惊!360竟然出了一款这么良心的软件
- PAT Basic 1071. 小赌怡情(15)
- 2020 中国软件 100 强,腾讯第二、阿里第三,他第一!
- 小程序-语音播放动画-animation
- Prometheus metric
- 指令引用的内存不能为written怎么解决
- win10企业版无法访问共享文件夹
- BlueKing3-作业平台
- Unity异常退出日志存储位置