数据结构栈的简介及其基于数组的简单实现

什么是栈

栈是一种用于存储数据的简单数据结构(与链表类似)。数据入栈的次序是栈的关键,可以把自助餐厅的
一堆盘子看做一个栈的例子,当盘子洗干净后,它们会添加到栈的顶端,当需要盘子时,也是从栈的顶端取
在这里插入图片描述

定义

栈(stack)是一个有序线性表,只能在表的一端(成为栈顶top)执行插入和删除操作,最后插入的元素
将第一个删除,所以,栈也称为后进先出的数据结构
在这里插入图片描述

栈的主要操作

! 按栈存储数据类型为整形为例

  1. int pop() 删除并返回最后一个插入栈的元素
  2. int size() 返回存储在栈中元素的个数
  3. boolean isEmpty() 判断栈中是否有元素
  4. void push(int data) 将data插入栈
  5. boolean isStackFull() 判断栈中是否满元素

异常

在栈抽象数据数据类型中,pop()操作和top()操作在栈空时候是不能执行的,试图对一个空栈执行pop()或者(top)操作会抛出异常,试图对一个满栈执行push操作也会抛出异常

应用场景示例

-符号匹配

  • 中缀表达式转换为后缀表达式
  • 计算后缀表达式
  • 实现函数调用(递归)
  • 网页浏览器中已访页面的历史记录(后退back即可)
  • 文本编辑器中的撤销
  • HTML和xml当中的标签匹配

基于简单数组的实现

public class ArrayStack {

    private int top;
    private int capacity;
    private int[] array;
    
    //初始化容量为1
    public ArrayStack() {
        capacity = 1;
        array = new int[capacity];
        top = -1;
    }
     
    //栈判空操作
    public boolean isEmpty() {
        return top == -1;
    }
    
    //栈满溢判断
    public boolean isStackFull() {
        return top == (capacity - 1);
    }
    
    //压栈
    public void push(int data) {
        if (isStackFull()) {
            System.out.println("Stack over flow!");
        } else {
            array[top++] = data;
        }
    }
    
    //出栈
    public int pop() {
        if (isEmpty()) {
            System.out.println("Stack is empty!");
            return 0;
        } else {
            return array[top--];
        }
    }
    
    //初始化栈
    public void deleteStack() {
        top = -1;
    }

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值