数据结构的知识小结—简述堆栈和队列

作者:坚定的守猴
开发软件和关键技术:VS;C#语法
在我们开始学习数据结构知识的时候,一般都会了解堆栈和队列这两种数据结构的内容。堆栈和队列在数据结构的线性表里面是特殊的存在。关于堆栈和队列的知识点有很多,现在我就根据自己所学到的来做一次简述和总结。
我们了解一个知识点是从最基本的概念入手。首先我们先来说一下堆栈。堆栈简称为栈,是限定只能在表的一端进行插入和删除操作的线性表。主要的特点就是元素的后进先出。就是在线性表里面最先输进去的元素往往是最后的那个才表现出来。这个就可以通俗的理解为我们在家饭后刷碗,你在收拾碗筷的第一盘子或者碗往往都是最后被洗的那只,而你后来拿的那个盘子则是第一个被洗的。它有两种存储的结构,顺序栈和链栈。顾名思义顺序栈就是按照一定的顺序结构进行存储的;而链栈是以链式结构存储的。对于栈的如何实现在表里对元素进行插入和删除,它还有一些基本的运算。在这里我就用顺序栈的存储结构的入栈和出栈的例子来进行讲解一下。
入栈,我们就可以理解为是在表的一端插入元素的操作。既然这样,自然而然就会出现栈满的这种情况,这样的话就引入一个栈满的条件:MaxSize-1;然后看一下代码

在这里插入图片描述

图中的Push(s,e)表示将元素e进栈,这个是栈的基本运算之一。在进行元素e添加的时候先判断top栈顶是否已经满足栈满条件,如果还没有就进行添加。这是入栈设计的基本思路。
有进就有出,既然我们了解入栈,那出栈的设计思路也就大同小异,和入栈一样,出栈也有条件:top = -1;代码如下
在这里插入图片描述
Pop(s)是堆栈的出栈基本运算,删除存储空间里面的栈顶元素。首先判断堆栈里面是否为空,如果不为空就先将元素备份起来,然后再进行栈顶元素减少top–。
以上就简单介绍了顺序结构堆栈的入栈和出栈的基本运算。还有其它一些堆栈的初始化、判断栈是否为空和长度等这些运算我就不再此一一列举了。有兴趣的可以找作者讨论。
介绍完栈,我们来说队列。与堆栈相比,队列的特点就大不一样。如果用蛮不讲理来形容堆栈,那彬彬有礼就是队列的代名词。在对比这两者的特点之前,先了解一下队列的概念。
队列,它和堆栈有点相似,元素的进出也有自己的名称:入队和出队;插入方式也差不多,可以在表格的一端插入元素;而不同的就是队列可以在另一端删除元素。允许插入的一段叫作队尾,另一端则是队首。存储结构和堆栈的一样。分为顺序结构和链式结构。
了解基本的队列的基本概念,我们就来以代码的方式介绍队列的运算,通过出队和入队的例子。初始化队列
在这里插入图片描述
front代表是队首,rear是队尾在这里我们就引入循坏队列为满的条件:front = (rear + 1)%MaxSize
在这里插入图片描述
在不断添加元素之前,front是不是等于下一个元素,如果不等的话,rear往下一个+1,之后判断已经符合了队列为满的条件,反之则可以添加下去。然后出队的思路和入队的差不多,队空的条件:front = rear;首先要判断这个队列是否为空,不为空的话就没有出队这一说法。当我们把里面的元素删掉之前也要先备份,因为在实际当中,不备份的情况下,出队就意味着让这些元素永久消失。
在这里插入图片描述
到了这里,总结一下,堆栈的入栈栈满的条件:MaxSize-1;出栈:top-1;队列入队队满:front = (rear + 1)%MaxSize;出队:front = rear;对比一下堆栈和队列在运算思路上面相似,而在特点方面却大相径庭。关于堆栈和队列的介绍就到这里,由于篇幅有限,还存在一些内容就不在这里详尽,如感兴趣,可以与作者进行讨论。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值