Java怎么使用一维数组来模拟栈的实现
发表于:2024-10-15 作者:千家信息网编辑
千家信息网最后更新 2024年10月15日,本文小编为大家详细介绍"Java怎么使用一维数组来模拟栈的实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Java怎么使用一维数组来模拟栈的实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2024年10月15日Java怎么使用一维数组来模拟栈的实现
本文小编为大家详细介绍"Java怎么使用一维数组来模拟栈的实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Java怎么使用一维数组来模拟栈的实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
思路
先进后出,优先解决压栈的问题,之后解决弹栈和main方法
功能
随时模拟压栈
随时模拟弹栈
防止异常和各种错误
随时可以遍历"栈"中存在的变量的方法,压栈弹栈栈帧清晰可见!
源码:
import java.util.Scanner;public class MoveTest01 { //局部变量供栈方法的遍历数组使用 static int i; //创建Object[]数组,作为栈,并且限制"内存上限"为5; static Object[] os = new Object[5]; //创建数组,模拟入栈 static num[] l = {new A(),new B(),new C(),new D(),new E(),new F()}; public static void main(String[] args) { int a =0;//遍历Object[]数组时的控制 boolean c = true;//控制循环 boolean d = true;//检测栈内存使用量防止异常 Scanner s = new Scanner(System.in); do { System.out.println("==========================="); System.out.print("请选择"压栈""弹栈"或"列出栈内存中储存的变量指向的方法",输入"退出"将会结束程序!:"); String z = s.next(); //判定用户输入 if (z.equals("压栈")) { //防止数列超限 if(a > (os.length - 1)){ d = false; System.out.println("栈内存已满!请弹栈后压栈!"); } if(d){ //调用num[]数组模拟入栈 l[a].leng(); a++; } //防止if(d)锁死 d = true; } else if (z.equals("弹栈")) { //调用pop方法,模拟弹栈,并初始化计数 pop(); a = 0; i = 0; } else if (z.equals("退出")) { //结束do...while循环体 c = false; } else if (z.equals("列出栈内存中储存的变量指向的方法")) { int index = -1;//创建栈帧 if(os[0] == null){ System.out.println("栈内没有已装载的变量!"); } for (int k = os.length - 1; k > -1; k--) { //判定如果Object[]数组内的各个属性,如果不等于null则输出声明 if(!(os[k] == null)){ index++; System.out.println("栈内存中已入栈的变量的方法有:" + os[k]); } } //如果栈帧的值不为0,则输出结果 if(!(index == -1)){ System.out.println(os[index] + "《== 栈帧指向"); } } }while (c); } //模拟栈 public static void Zhan(Object o){ if(i < os.length) { //给Object[]数组赋值 os[i] = o; System.out.println("目标:" + os[i] + "的所有变量已压入栈内!"); i++; } } public static void push(String c){ //接收下面类传来的参数并赋值给Zhan() Zhan(c); } public static void pop(){ //检测数组第一位的值是不是空,如果是则输出消息 if(os[0] == null){ System.out.println("栈内没有已装载的变量!无法弹栈!"); } //模拟弹栈 for(int k = (os.length - 1);k >= 0;k--){ //遍历数组,将数组内不是null的值全部输出并初始化为null if(!(os[k] == null)) { System.out.println(os[k] + "的所有变量:已弹出内存!"); os[k] = null; } } }}class num{ public void leng(){ //让下面的方法有个共同的父类,并且调用时统一输出自己的名字给栈 MoveTest01.push(getClass().getName()); }}//即将入方法区的方法,假设里面有变量(也可以直接把这些方法看成变量);class A extends num{ public A() {}}class B extends num{ public B() {}}class C extends num{ public C() {}}class D extends num{ public D() {}}class E extends num{ public E() {}}class F extends num{ public F() {}}
读到这里,这篇"Java怎么使用一维数组来模拟栈的实现"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
数组
方法
变量
内存
输出
一维
指向
文章
内容
思路
中储
循环
控制
输入
妥当
清晰可见
上限
使用量
先进
功能
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库导入到本地库
睢县网络技术公司
资源 数据库
服务器键盘按不动
游戏服务器延迟检测
学习打造网络安全宣传平台
网络安全方面证
专项技术资格人才数据库
原神深渊数据库nga
电脑信息工程及计算机网络技术
客户定制软件开发
互联网科技发展情况
国家网络安全责任制实施办法
大学生如何积极维护网络安全
连接redis缓存数据库
软件开发找什么公司好
组建一只软件开发团队
想从事数据库具体该学些什么
厦门信达股份招软件开发实习生
工信局网络安全工作自查报告
lol国服服务器人数排行2021表
便民软件开发
电脑上如何做数据库
泉州百讯网络技术有限公司
数据库应用题解题技巧
嘟嘟牛数据库
小型数据库的分类
元神为什么老是重新连接服务器
武汉时波网络技术
福州大榕树翔生软件开发