创建一个可以实现存放任意元素的栈

public class HomeworkExercise {
//    这段代码是实现一个可以存放任意类型元素的栈
    public static void main(String[] args) {
        Object[] a = {1,2,3};
        MyStack myStack = new MyStack(a);
        myStack.push("li");
//        可以通过一个obj来记下pop的值,之后可以用,不用多次pop
//        可以在栈中设置如果栈为空,返回null,在这里判断一下,如果为空就可以跳出这个循环了
        while (true){
            Object obj = myStack.pop();
            if (obj == null)
                return;
            else{
                System.out.println("此时栈顶的元素为" + obj);
            }
        }
    }
}
//不能加public,加了就要写在别的类包中,一个类包只能写一个public类
/*public */class MyStack{
    Object[] elements = new Object[20];
    int top = -1;
    public MyStack(Object[] elements) {
        if (elements.length > this.elements.length){
            System.out.println("该数组太大,超过了栈的容量");
            return;
        }
        System.arraycopy(elements,0,this.elements,0,elements.length);
        top = elements.length - 1;
    }
    public void push(Object x){
        if(top + 1 >this.elements.length){
            System.out.println("该数组已满,无法push数据");
            return;
        }
        this.elements[++top] = x;
    }
    public Object pop(){
        if (top < 0){
            System.out.println("栈已空,没有元素可以出栈");
            return null;
        }
        return this.elements[top--];
    }

}
posted @ 2021-09-23 22:38  better_tomorrow  阅读(53)  评论(0)    收藏  举报