数据结构之栈和队列

(一)栈的定义

示意图:

栈:是一种只能在一端插入或删除操作的线性表

栈的几个重要概念:

  • 运行进行插入、删除操作的一端称为栈顶
  • 表的另一端称为栈底
  • 当栈中没有元素时,称为空栈
  • 栈中插入元素称为入栈
  • 栈中删除元素称为出栈

栈的主要特点:先进后出,既后进的元素先出栈。

(二)栈的代码实现

栈的实现方式有2种:静态栈--数组实现    动态栈--链表实现

1.静态栈--数组实现

从顺序栈示意图中我们可以看到栈的顺序存储结构可以使用一个数组+一个top整形变量来实现,利用数组来顺序存储栈中的所有元素,利用top整形变量来表示栈顶元素的下标位置。

规定:

  • top总是指向栈顶元素,初始值为-1
  • 当top == MaxSize-1时,表示栈满了,不能再进栈
  • 进栈top加1,出栈top减1

顺序栈4要素:

  • 栈空条件:top = -1
  • 栈满条件:top == MaxSize-1
  • 进栈操作:++top
  • 出栈操作:top--

静态栈--数组实现代码演示

class ArrayStack<T> {
    //数组保存数据
    private Object[] data;
    //约定top总是指向栈顶元素,初始值为-1
    private int top;

    /**
     * 1.初始化数组大小==初始化栈大小
     * @param initArraySize
     */
    public ArrayStack(int initArraySize) {
        this.top = -1;
        data = new Object[initArraySize];
    }
    /**
     * 2.判断栈是否为空
     * @return
     */
    public boolean isEmpty(){
        return top == -1 ? true : false;
    }

    /**
     * 3.入栈
     * @param value
     */
    public void push(T value) throws Exception {
        if(top == data.length-1){
            throw new Exception("栈满异常");
        }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值