Java数据结构系列——栈

Java数据结构系列——栈

栈的定义

作为数据结构中的一种,满足FILO(先进后出功能),因此有pop方法-存储数据,我们称之为进栈或者压栈,push方法-删除数据,称之为出栈或者弹栈,peek方法-查看栈顶数据。

栈结构

栈结构

分析

栈这种数据结构,用数组来存储的时候。
步骤:
1.创建一个自己的栈Stack类,需要一个泛型E。
2.成员变量,Object数组,数组大小,以及顶部指针。
3.需要两个构造器,一个无参构造,一个初始化数组大小大的数组。
4.pop()方法,不停的从顶部插入数据。
5.peek()方法,获取顶部数据。
6.push()方法,擦除顶部数据。

代码

public class Stack<E> {

   private Object[] data = null; //存入进栈的数据
   private int maxSize = 0; // 栈容量
   private int top = -1; // 栈顶部指针,为了到时候能够找到栈顶数据
   /**
    * 无参构造
    */
   public Stack() {
       this(10);
   }
   /**
    * 有参构造,初始化容量
    * @param initialSize
    */
   public Stack(int initialSize) {
       if(initialSize >= 0) {
           this.maxSize = initialSize;
           data = new Object[maxSize];
           this.top = -1;
       }else {
           throw new RuntimeException("初始化大小不能小于0:" + initialSize);
       }
   }
   
   /**
    * 
    *  [进栈,压栈,第一个元素位置为0] 
    *  @return    
    * @exception/throws [违例类型] [违例说明]
    * @see [类、类#方法、类#成员]
    */
   public boolean push(E e) {
       if(top == maxSize - 1) {
           throw new RuntimeException("栈已满,无法继续存储元素!");
       }else {
           data[++top] = e;
           return true;
       }
   }
   
   /**
    * 
    *  [出栈,从顶部数据移除] 
    *  @return    
    * @exception/throws [违例类型] [违例说明]
    * @see [类、类#方法、类#成员]
    */
   public E pop() {
       if(top == -1) {
           throw new RuntimeException("栈已空!");
       }else {
           return (E) data[top--]; //此时top值减一,下次再进栈的时候,会将原来的数据替换。
       }
   }
   
   /**
    * 
    *  [查询顶部数据,但是不移除] 
    *  @return    
    * @exception/throws [违例类型] [违例说明]
    * @see [类、类#方法、类#成员]
    */
   public E peek() {
       if(top == -1) {
           throw new RuntimeException("栈已空!");
       }else {
           return (E) data[top];
       }
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值