【题目】

编写程序,使用一维数组,模拟栈数据结构。

【要求】

  1. 栈可以存储Java中任何引用数据类型的数据。
  2. 栈中提供push方法模拟压栈(栈满有提示信息)。
  3. 栈中提供pop方法模拟弹栈(栈空有提示信息)。
  4. 编写测试程序,new栈对象,调用push、pop方法来模拟压栈和弹栈的动作。

【代码实现】

MyStack

package top.dj.array2;

/**
 * @author dj
 * @date 2020-07-11
 */
public class MyStack {

    //模拟栈
    Object[] objects;
    //模拟栈帧
    int index;

    public MyStack() {
    }

    public MyStack(Object[] objects) {
        this.objects = objects;
    }

    //栈帧
    public int getIndex() {
        index = objects.length;
        for (int i = 0; i < objects.length; i++) {
            if (objects[i] == null) {
                index--;
            }
        }
        return index;
    }

    //压栈
    public void push(Object object) {
        int i = getIndex();
        if (i == objects.length) {
            System.out.println("栈满!");
        } else {
            //压栈
            objects[i] = object;
        }
    }

    //弹栈
    public void pop() {
        int i = getIndex();
        if (i == 0) {
            System.out.println("栈空!");
        } else {
            //弹栈
            objects[i - 1] = null;
        }
    }
}

MyStackTest

package top.dj.array2;

import java.util.Arrays;

/**
 * @author dj
 * @date 2020-07-11
 */
public class MyStackTest {

    public static void main(String[] args) {

        String[] strings = new String[5];
        MyStack myStack = new MyStack(strings);

        for (int i = 0; i < 5; i++) {
            myStack.push("stack");
        }
        for (int i = 0; i < 2; i++) {
            myStack.pop();
        }
        //打印输出栈
        System.out.println(Arrays.toString(strings));
    }
}

输出

[stack, stack, stack, null, null]

分类: Java SE

Deng Jia

Keep Moving.

0 条评论

发表评论

电子邮件地址不会被公开。