ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java中通过数组模拟栈

2022-07-04 21:02:14  阅读:146  来源: 互联网

标签:index elements obj Object pop 数组 MyStack java 模拟


package com.lut.javase.array;
/*
*第一题:
    编写程序,使用一维数组,模拟栈数据结构。
    要求:
        1、这个栈可以存储java中的任何引用类型的数据。
        2、在栈中提供push方法模拟压栈。(栈满了,要有提示信息。)
        3、在栈中提供pop方法模拟弹栈。(栈空了,也有有提示信息。)
        4、编写测试程序,new栈对象,调用push pop方法来模拟压栈弹栈的动作。

        public class MyStack{ // 栈类

            // 提供一个数组来存储栈中的元素
            Object[] elements;

            // 栈帧(永远指向栈顶部的元素)
            // 每加1个元素,栈帧+1
            // 每减1个元素,栈帧-1
            int index;

            // 构造方法
            // 构造方法是不是应该给一维数组一个初始化容量。

            // push方法(push方法压栈)
            // 压栈表示栈中多一个元素。
            // 但是栈如果已满,压栈失败。
            // 这个方法的参数以及返回值类型自己定义。

            // pop方法(pop方法弹栈)
            // 弹栈表示栈中少一个元素。
            // 但是栈如果已空,弹栈失败。
            // 这个方法的参数以及返回值类型自己定义。

        }

        main(){
            测试...
        }
 */
public class HomeWork01 {
    public static void main(String[] args) {
        MyStack myStack = new MyStack();
        Object a = new Object();
        myStack.push(a);
        myStack.pop();
        myStack.pop();
        myStack.pop();
    }
}
class MyStack{
    int index = 0;
    Object obj;
    Object[] elements = new Object[20];
    MyStack(){}
    MyStack(Object obj){
        this.obj = obj;elements[index] = obj;
    }
    public void push(Object obj){
//        elements[index] = obj;
        if(index < elements.length){
            index++;
            elements[index] = obj;
            System.out.println(obj+"pushed");
        }else{
            System.out.println("栈可能满了");
        }

    }
    public Object pop(){
        if(index <= 0){
            System.out.println("此栈可能为空");
            return null;
        }else{
            System.out.println(elements[index]+"poped");
            Object a = elements[index];
            index--;
            return a;



        }

    }
}

 

标签:index,elements,obj,Object,pop,数组,MyStack,java,模拟
来源: https://www.cnblogs.com/kelvin-liu/p/16444411.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有