明修栈道,暗度陈仓:栈与队列的定义

本文详细介绍了栈和队列这两种线性数据结构,阐述了它们的定义、特性以及在计算机科学中的应用。在 Java 中,栈通过 Stack 类实现,队列则通过 Queue 接口来实现。文章还提供了面试题示例,帮助读者深入理解栈与队列的差异和实际运用。
摘要由CSDN通过智能技术生成

栈和队列有相似点也有不同点,相似点在于他们都是线性数据结构,不同点是一个先进后出,一个是先进先出,本质上就是逆序操作与顺序操作。这两种数据结构在企业的面试中经常出现,不仅有考察相关代码的实现,也会考察这两种数据结构具体的应用。这部分内容将会带大家梳理、掌握栈与队列这两个数据结构。

1. 栈

1.1 定义

要明白栈的概念,就需要从“栈”这个字开始解读,《说文》中解释到:栈,棚也。所以本质上,栈就是用来存储货物的地方。引申到计算机科学中,栈的就是暂时存储数据的地方。栈作为一种只能在其中一头插入删除操作的特殊线性表,严格遵循数据先入后出的原则进行操作。基于这样的原则,我们可以很好地理解栈在进行数据的读取、输出的过程中,不需要更改栈底的指针。

栈是一种先进后出(LIFO,Last In First Out)的数据结构,这个数据结构非常好理解就类似于压入子弹的枪膛。因此可以得到栈的一个定义:限定仅在表尾进行插入和删除操作的线性表。这里需要特别注意的是,栈属于线性表。栈可以通过数组或者链表来实现,根据实现的数据结构不同,分别称为顺序栈和链式栈。由此可以引出一些有关栈的概念。

  • 栈顶(top):允许进行数据插入和删除的一端
  • 栈底(bottom):栈顶的另一端
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值