zoukankan      html  css  js  c++  java
  • 概念介绍

      有同学想了解栈,今天它来了!栈是一种数据结构,它的特点是先进后出,许多小伙伴记了总是会忘记,那么我教下大家怎么记住这个数据结构的特点。栈的同音字是什么?站,大家想象一个站立的桶,如果往里扔两个球,由于底部被被封住了,想把球依次拿出来,那么先进去的球,只能等前面的球被取出后,才能被取出,所以栈(站)的特点是先进后出,你记住了么?

    代码实现

      我们使用数组来实现栈。栈的属性:

    1     // 栈的大小
    2     private int maxSize;
    3     // 用于存放入栈的数据
    4     private int[] stack;
    5     // top表示栈顶,初始化为-1
    6     private int top = -1;

      有参构造:

    1     // 有参构造实现
    2     public Stack(int maxSize) {
    3         this.maxSize = maxSize;
    4         stack = new int[maxSize];
    5     }

      接下来是栈满和栈空判断的两个方法:

    1     // 栈满
    2     public boolean isFull() {
    3         return top == maxSize - 1;
    4     }
    5 
    6     // 栈空
    7     public boolean isEmpty() {
    8         return top == -1;
    9     }

      核心操作:入栈和出栈

     1     // 入栈
     2     public void push(int value) {
     3         if (isFull()) {
     4             throw new RuntimeException("栈满,入栈失败");
     5         }
     6         top++;
     7         stack[top] = value;
     8     }
     9 
    10     // 出栈
    11     public int pop() {
    12         if (isEmpty()) {
    13             throw new RuntimeException("栈空,没有数据~");
    14         }
    15         int value = stack[top];
    16         top--;
    17         return value;
    18     }

      至此,代码编写完成,是不是很简单,Git地址:https://github.com/HollowCup/algorithms-and-data-structure,具体实现位于data-structure工程下的stack目录,如果发现不足之处,请联系我进行更改,十分感谢!关注我,为你介绍更多数据结构!

  • 相关阅读:
    hashlib模块
    sys模块
    random模块
    time模块
    生成器、迭代器
    装饰器
    函数相关内容
    集合相关操作
    springcloud(四):Eureka的配置详解
    springcloud(二):Eureka服务注册与发现
  • 原文地址:https://www.cnblogs.com/maguanyue/p/11574649.html
Copyright © 2011-2022 走看看