编程语言
首页 > 编程语言> > java中通过数组模拟栈

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