【入门】数据结构:栈(stack)和队列(queue)

一:定义

栈(stack)是一种线性数据结构,它就像一个上图所示的放入乒乓球的圆筒容器,栈中的元素只能先入后出(First In Last Out,简称FILO)。最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶(top)。

栈这种数据结构既可以用数组来实现,也可以用链表来实现。

栈的数组实现如下:

栈的链表实现如下:

二:思考:先入后出

子弹的弹夹我们一定见过,子弹在被压入的时候就相当于是一个个元素,而弹夹就相当于是栈。

先被压入的子弹是最后被打出的,因此先压入的元素是最后出来的

这样可以帮助我们更好地理解先入后出的含义。

注意:栈里是没有索引器的哦。

三:添加/删除栈顶元素:(push / pop)

我们把100、200、300、400先存入栈 st 中。

1:Push---入栈
2:Pop---出栈

此时输出:栈顶的元素:400

注意:原来的栈st 已经没有 400 因为他已经出栈

3:peek---提取

此时的栈顶元素是谁呢?是300

注意:原来的栈st 已经还有 300 因为他没有出栈,只是被提取。

4:栈转换为数组

队列

一:定义

队列也是一种特殊的线性表,它允许在一端进行插入数据,在另一端进行删除数据的。队列里边有队首,队尾,队首元素。其遵循的原则是先进先出

二:要素

1:入队(添加):Enqueue

2:出队(删除):Dequeue

3:栈顶(不删除):Peek

试一下结果吧~

栈和队列的区别和意义

1:区别

(1)栈和队列的出入方式不同:是先入后出、队列是先入先出。

(2)栈和队列在具体实现的时候操作的位置不同:因为栈是先入后出,它在一段进行操作;而队列是先入先出,实现的时候在两端进行。在Java标准库中实现队列时是按照链表实现的。

2:意义

栈和队列存在的意义就是减少线性表的基本操作,提取常用操作,让人们使用起来更方便,更不容易出错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值