找回密码
 立即注册

信奥算法之数据结构——栈和队列(一)

2025-4-3 15:41
 什么是栈

栈是一种特殊的线性数据结构,它遵循后进先出(Last In First Out,LIFO)的原则。形象地说,栈就像一个只允许从一端进出货物的仓库,最后放入仓库的货物会最先被取出。
在栈中,数据元素的插入和删除操作都只能在栈顶进行。这种独特的操作方式赋予了栈许多特殊的应用价值。

栈的基本操作


1. 入栈(Push)
将一个新元素添加到栈顶。当执行入栈操作时,栈顶指针会向上移动一个位置,新元素被放置在栈顶指针所指向的位置。例如,在一个初始为空的栈中,依次入栈元素 1、2、3,那么栈顶元素就是 3。
2. 出栈(Pop)
移除栈顶的元素。执行出栈操作后,栈顶指针会向下移动一个位置,栈顶元素被移除。以上述栈为例,执行出栈操作后,栈顶元素变为 2,元素 3 被移除。
3. 获取栈顶元素(Top)
返回栈顶的元素,但并不移除它。这一操作可以让我们在不改变栈结构的情况下,获取栈顶元素的值,方便进行各种判断和计算。
4. 判断栈是否为空(IsEmpty
检查栈中是否包含任何元素。当栈为空时,执行出栈等操作会导致错误,因此在进行操作前判断栈是否为空是非常必要的。
5. 获取栈的大小(Size)
返回栈中当前元素的数量,帮助我们了解栈的状态。

什么是队列


队列是一种线性数据结构,它遵循先进先出(First In First Out,FIFO)的原则。可以将队列想象成日常生活中的排队场景,先到的人先接受服务,后到的人排在队尾等待。在队列中,新元素从队尾加入,元素的移除则在队头进行。

队列的基本操作


1. 入队(Enqueue)
将一个新元素添加到队尾。例如,在一个初始为空的队列中,依次入队元素 1、2、3,此时队尾元素是 3。
2. 出队(Dequeue)
移除队头的元素。以上述队列为例,执行出队操作后,队头元素 1 被移除,新的队头元素变为 2。
3. 获取队头元素(Front)
返回队头的元素,但并不移除它。这有助于在不改变队列结构的前提下,查看即将被处理的元素。
4. 判断队列是否为空(IsEmpty)
检查队列中是否有元素。若队列为空,执行出队等操作会出错,所以操作前判断队列是否为空很重要。
5. 获取队列的大小(Size)
返回队列中当前元素的数量,以便了解队列的状态。

队列和栈都是一种线性结构,由上文可以看出,队列和栈的基本操作大致相同。

队列和现实中的排队情况类似,先进入队列的人先出去。

而当你在浏览器中依次访问多个网页时,每访问一个新页面,就相当于将该页面 “入栈”。当你点击 “后退” 按钮时,就会按照后进先出的顺序返回上一个访问的页面,这就如同从栈中依次 “出栈” 页面。

栈和队列作为基础数据结构,各自具有独特的特点和广泛的应用场景。通过深入理解它们的定义、操作和实现方式,可以为后续学习更复杂的数据结构(树、图)和算法打下坚实的基础。在后续的文章中,我们将继续深入探讨栈和队列的更多高级应用和相关算法。

路过

雷人

握手

鲜花

鸡蛋

全部回复(0)