用一维数组模拟计算机分配内存时:压栈和弹栈过程

本文介绍了Java中的MyStack类,用于模拟堆栈数据结构,包括压栈、弹栈操作,以及如何在MyStackTest类中进行实例化和测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyStack类:

package com.zg.firstdemo;

public class MyStack {
    //栈帧,每加一个元素,针栈+1,每减一个元素,针栈-1
    private int index;

    //定义一个一维数组模拟内存大小
    private Object[] elements ;

    
    //初始化内存大小和栈帧
    public MyStack() {
        this.index = -1;
        this.elements=new Object[5];
    }

    //定义压栈方法
    public  void Pop(Object a){
        if (index>=elements.length-1){
            System.out.println("栈已满,无法继续压栈");
            return;
        }
        index++;
        elements[index] = a;
        System.out.println("压栈:"+a+"\t"+"元素成功,栈帧指向"+index);
    }

    //定义弹栈方法
    public void Push(){
        if (index<0){
            System.out.println("栈已空,无法继续弹栈");
            return;
        }
            System.out.print("弹栈:"+elements[index]+"\t"+"元素成功");

          //弹栈成功后将最后一个元素变为null
            elements[index]=null;
            index--;
             System.out.println("栈帧指向"+index);

    }

    //设置set和get方法
    public int getIndex() {
        return index;
    }

    public void setIndex(int index) {
        this.index = index;
    }

    public Object[] getElements() {
        return elements;
    }

    public void setElements(Object[] elements) {
        this.elements = elements;
    }
}

MyStackTest类:

package com.zg.firstdemo;

public class MyStackTest {
    public static void main(String[] args) {
        MyStack myStack = new MyStack();
        myStack.Pop("我爱中国");
        myStack.Pop("湖北工程学院");
        myStack.Push();
        myStack.Pop("湖北工程学院");
        myStack.Pop(821);
        myStack.Pop(new Object());
        myStack.Pop(new Object());
        System.out.println("============================");
        myStack.Pop(new Object());
        myStack.Push();
        myStack.Push();
        myStack.Push();
        myStack.Push();
        myStack.Push();
        myStack.Push();
        System.out.println("============================");
        myStack.Pop("我爱中国");
        for (int i = 0; i < myStack.getElements().length; i++) {
            System.out.println(myStack.getElements()[i]);
        }


    }
}

运行截图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值