用简单的一维数组实现的简单的栈结构

1,定义一个容器 用于存储栈元素
2,定义栈顶标记 用于标记栈顶的位置
3,入栈
4,出栈
5,获取栈顶元素
6,判断栈是否为空
7,清空当前栈
8,获取栈中有效元素的个数
9,返回栈的字符串的表现形式
在这里插入图片描述
下面的代码都是按照此图

/**
 Stack是一个简单的由一维数组实现的栈结构
 支持入栈 出栈 等常见的操作 但不支持动态扩容
 此栈只存储int型数据
 */
public class Stack{
    //定义一个数组容器 用于存储栈元素 data.length是最大容量
    private int [] data;
    //栈顶标记 用于标记栈顶元素的位置 当栈为空时,top=-1,栈中有效元素的个数是top+1
    private int top;
    //默认最大容量为10
    private int capacity=10;
    /**
     创建一个默认容量为10的栈
     */
    public Stack(){
        this.data=new int [capacity];
    }
     /**
      创建一个指定容量为capacity的栈
      @param capacity 由调用者传入的指定容量
                       如果capacity<0 则容量置为0
                       如果capacity>100 则容量置为100
      */
      public Stack(int capacity){
          if(capacity<0){
              capacity=0;
          }
          if(capacity>100){
              capacity=100;
          }
          this.data=new int [capacity];
      }
     /**
      * 将元素e入栈,如果当前的栈已经满了,则无法加入
      * @param e 用户指定入栈的元素
      */
       public void push(int e){
           if(top+1==data.length){
               System.out.println(">>>栈已满,无法添加元素"+e);
               return;
            }
       data[++top]=e;
}
     /**
      从栈中弹出一个元素,如果栈已经是空,则返回-1即可
      * @return 返回当前栈顶的元素,如果栈为空则返回-1
      */
     public int pop(){
          if(top==-1){
              System.out.println("栈为空,无法弹栈元素");
              return -1;
          }
          return data[top--];
     }
     /**
      获取当前栈顶元素,如果栈为空,则返回-1即可
      @return 返回当前栈顶元素,如果栈为空,如果栈为空,则返回-1
      */
      public int peek(){
        if(top==-1){
            System.out.println("栈为空,无法弹栈元素");
            return -1;
        }
        return data[top];
   }
     /**
      判断当前栈是否为空
      @return true表示栈空,否则栈不为空
      */
      public boolean isEmpty(){
          return top==-1;
      }
      /**
       清空当前的栈
       */
      public void clear(){
          top=-1;
      }
      /**
       获取栈中有效元素的个数
       */
      public int size(){
          return top+1;
      }
      /**
       获取栈中有效元素的个数
       */
      public String toString(){
          if(isEmpty()){
              return "[]";
          }
          String s="[";
          for(int i=0;i<size();i++){
              s+=data[i];
              if(i==size()-1){
                  s+="]";
              }
              else{
                  s+=",";
              }
          }
            return s;
      }

}
发布了52 篇原创文章 · 获赞 0 · 访问量 1195

猜你喜欢

转载自blog.csdn.net/qq_37244548/article/details/104587191