栈(数据结构)

  • 栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。
  • 向栈顶加入元素的操作被称为进栈入栈压栈
  • 从栈顶取出元素的操作被称为出栈退栈

栈的代码实现

  • 我们使用数组作为栈的实现基础,栈底默认设置为0;
  • 对于栈顶指针,我们可以定义它的功能为指向栈顶元素的指针(索引)。因此栈的几种特殊状态可以表示为:
    • 栈空:栈顶等于-1
    • 栈满:栈顶等于n-1,其中n为数组的长度。
  • 那么栈的Java实现可以为:
package 数据结构;

public class Stack<T> {
    private int top = -1;   // 栈顶指针
    private final T[] stack;// 栈空间
    public final int size;  // 栈的容量
    /**
     * Stack构造函数
     * @param size  栈的尺寸大小
     * @param array 栈的数组空间
     */
    Stack(int size, T[] array) {
        this.size = size;
        stack = array;
    }
    /**
     * 入栈操作
     * @param element   要入栈的元素
     * @return          入栈操作是否成功(栈满会导致失败)
     */
    public boolean push(T element) {
        if (top < size - 1) {
            stack[++top] = element;
            return true;
        } else return false;
    }
    /**
     * 出站操作
     * @return  栈顶元素,如果栈空会返回null
     */
    public T pop() {
        if (top >= 0) return stack[top--];
        else return null;
    }
    /**
     * @return 栈是否为空
     */
    public boolean isEmpty() {return top < 0;}
    /**
     * @return 栈是否为满状态
     */
    public boolean isFull() {return top >= size - 1;}
    /**
     * @return 当前栈中的元素数量
     */
    public int getElementNumber() { return top + 1; }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值