【图解】ACM 选手带你玩转栈和队列

本文以生动的例子介绍了栈和队列这两种数据结构,包括它们的定义、存储结构(顺序存储和链式存储)以及在实际应用中的作用。栈是后进先出(LIFO)结构,常用于浏览器的后退功能;队列是先进先出(FIFO)结构,如文字输入的顺序显示。顺序栈和链栈分别用数组和链表实现,顺序队列和链队列同样如此,循环队列解决了顺序队列满的问题。
摘要由CSDN通过智能技术生成

大家好呀,我是不会写开场白的帅蛋。

今天直入重点,玩儿栈和队列,英文名 Stack and Queue,线性数据结构的典型代表,数组和链表的兄弟姐妹。

下面,让我们来看看,它们是有多简单。

1422ac388ed60b8816751c77644b5a1

栈是一种后进先出(Last in First Out)的数据结构,简称 LIFO

啥叫后进先出呢?这就和打飞机,呃,打手枪一样,弹夹中最先插进去的子弹最后才打出去,越晚摁进去的子弹越早打出来。

别小看它,栈是一种很重要的编程概念,它在软件应用中很常见。我们每天都用到的浏览器就用到了,浏览器的“后退”按钮。

1e1100da801ed94183bb04eb3d6ba64

比如臭宝上班的时候正在浏览器上看**@编程文青李狗蛋**的技术文,此时弹出一个保持男性持久的框框,“不小心”点到了,正看的入迷的时候你的老大路过,此时拿出单身 N 年的手速点击后退,你老大一看你在看帅蛋的文章,赞赏你是积极上进的员工,奖励手纸一卷。

看,“后退”是多么的有用~

2444c73e8e27935107cf6ad3855361c

栈的定义

那么,到底怎么定义栈呢?

很简单。

栈是限制仅在表的一端(表尾)进行操作(插入和删除)的线性表。

表尾又叫栈顶(Top),允许插入和删除,那么另一端就叫做栈底(Bottom),啥也不能干,只能干等着第一个进栈的过来躺着。

d337ed87a47204b2dc18eb96d6d6754

栈的插入操作,叫做入栈(push)。存入栈的元素之间没有任何具体的关系,只有到来的时间的先后顺序。

入栈操作涉及的单个数据的进入,所以时间复杂度为 O(1),同时入栈过程中只需要单个的临时存储空间,所以空间复杂度为 O(1)。

63934b0a5713077c30d28568bcf81d8

栈的删除操作,叫做出栈(pop)。删完了,也就是栈底就是栈顶的时候,就叫空栈

同理,出栈操作涉及个别数据的出去且出栈过程只需要单个的临时存储空间,所以时间复杂度和空间复杂度都为 O(1)。

85ec2b6749c740781ef5fa51dacd2f1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值