【Java数据结构】线性表-栈

概念

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。

出栈:栈的删除操作叫做出栈。出数据在栈顶。

在这里插入图片描述

栈的使用

在这里插入图片描述

栈的模拟实现

public class MyStack {
    int[] array;
    //数组实现
    int size;
    public MyStack(){
        array = new int[3];
        //默认初始化容量为3
    }
    public int push(int e){
        ensureCapacity();//检查是否需要扩容
        array[size++] = e;
        return e;
    }
    public int pop(){
        //从栈顶弹出元素
        int e = peek();
        size--;
        return e;
    }
    public int peek(){
        //只查看栈顶的元素 不弹出
        if(empty()){
            throw new RuntimeException("栈为空,无法获取栈顶元素");
        }
        return array[size-1];
    }
    public int size(){
        //获取栈的大小
        return size;
    }
    public boolean empty(){
        //判断栈是否为空
        return 0 == size;
    }
    private void ensureCapacity(){
        //扩容函数
        if(size == array.length){
            array = Arrays.copyOf(array, size*2);
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沉着的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值