基础数据结构之栈(用Java语言实现)

栈又叫做堆栈;是允许在同一端进行插入与删除操作的特殊线性表。其中执行插入删除操作的一段叫栈顶(Top),另一端为栈底(Bottom)。栈底固定,栈顶浮动。当栈内没有元素时,该栈叫做空栈。

插入过程叫做进栈(Push);

删除过程叫做出栈(Pop);

栈遵循FILO(First in Last Out),先入后出的原则。

示意图如下:

在这里插入图片描述

方法功能描述
push()向栈内压入一个数据,在栈的最下面
pop()弹出栈顶元素,出栈
peek()返回当前栈顶数据

首先定义栈的基本数据结构:

public class Stack<E>{
    private Object[] data=null;
    private int maxSize;
    private int top=-1;
    
    Stack(){
        this(10)
    }
    
    Stack(int initalSize){
        if(initalSize>=0){
            this.maxSize=initalSize;
            data=new Object(initalSize);
            top=-1;
        }else{
         	throw new RuntimeException("初始化大小不能小于0"+initalSize);   
        }
    }
}

该段代码定义了一个栈类,‘定义了一个数组data,用于存储数据;定义了一个maxSize,用于规定栈的最大容量;

定义了栈顶指针为-1;同时无参构造函数中,栈的默认大小为10,当然也提供了有参的构造方法,帮助其规定其他容量的栈。

//进栈,第一个元素top=0
public boolean push(E e){
    if(top==maxSize-1){
        throw new RuntimeException("栈已满,无法再继续入栈")
    }else{
        data[++top]=e;
        return true;
    }
} 

进栈前首先要判断是否栈已经满了,要是满了,则压不了栈;注意top指针是从-1开始的,因此top==maxSize-1的时候就是栈已经满了;入栈就是data[++top]=e,(指针不断上移)然后返回true(因为该函数返回值是布尔值)。

出栈,从栈顶移除数据

public E pop(){
    if(top==-1){
        throw new RuntimeException("栈为空")
    }else{
        return (E)data[top--];
    }
}

上面方法定义了pop(),注意这里是data[top–],先把数据移除去,再top减一

仔细推向一下,一开始top=-1;压入一个,top就是0了,也就是top要比maxSize小一个。

public E peek(){
    if(top==-1){
        throw new RuntimeException("栈为空")
    }else{
        return (E)data[top];
    }
}

这个和pop()差不多

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

你们卷的我睡不着QAQ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值