Java中使用数组模拟栈的基本操作

废话不多说,直接上代码

实现类,主要实现功能如下:

  • 返回栈长度
  • 判断栈满、栈空
  • 压栈、弹栈
  • 遍历栈中的元素
  • 其中带有有参构造和无参构造方法,默认初始化栈的长度为5,用户可以通过有参构造自定义长度
package com.company.arry;

// 使用数组模拟栈的接操作
public class ArrayImitateStack {
    // 定义一个数组作为栈
    Object [] stack;
    private int length = 5;
    private int size = 0;

    public ArrayImitateStack() {
    	//设置默认初始长度为5
    	this.stack =  = new Object[5];
    }

    // 定义有参构造,用户自定义栈的长度
    public ArrayImitateStack(int length) {
        this.length = length;
        this.stack = new Object[length];
    }

    // 返回栈的长度
    public int len(){
        return size;
    }

    // 判断栈是否为空
    public boolean isEmpty(){
        if (size == 0){
            return true;
        }else {
            return false;
        }
    }

    // 判断栈满
    public boolean isFull(){
        if (size == length){
            return true;
        }else {
            return false;
        }
    }

    // 压栈
    public void push(Object msg){
        if (isFull()){
            System.out.println("Stack 已满");
        }else{
            stack[stack.length-1-size] = msg;
            size ++;
        }
    }

    // 弹栈
    public Object pop(){
        Object temp = null;
        if (this.isEmpty()){
            temp = "Stack 为空";
        }else {
            temp = stack[stack.length-size];
            size --;
//            System.out.println("stack["+(stack.length-size)+"]"+stack[stack.length-size]);
        }
        return temp;
    }

    // 遍历栈中的元素
    public void show(){
        for (int i=0;i<stack.length;i++){
            if (stack[i] != null)
                System.out.print(stack[i]+" ;");
        }
    }
}

测试类

package com.company.arry;

public class Test {
    public static void main(String[] args) {

        ArrayImitateStack stack = new ArrayImitateStack(3);
        System.out.println("stack初始元素个数: " + stack.len());
        ;
        System.out.println("stack初始化是否为空: " + stack.isEmpty());
        System.out.println("stack初始化是否满: " + stack.isFull());
        stack.push("java");
        stack.push("c");
        stack.push("php");
        System.out.println("stack压栈之后元素个数: " + stack.len());
        System.out.println("stack是否满: " + stack.isFull());
        // 继续压栈
        stack.push("R");
        // 遍历栈中元素
        stack.show();
        System.out.println();
        System.out.println(stack.pop());
        System.out.println("弹栈之后stack的元素个数: " + stack.len());
        System.out.println(stack.pop());
        System.out.println(stack.pop());
//        stack.push("C++");
        System.out.println(stack.pop());

    }
}


/*
运行结果如下:
stack初始元素个数: 0
stack初始化是否为空: true
stack初始化是否满: false
stack压栈之后元素个数: 3
stack是否满: true
Stack 已满
php ;c ;java ;
php
弹栈之后stack的元素个数: 2
c
java
Stack 为空
*/

你可能感兴趣的:(数据结构算法基础)