C语言老手都会:不会这个,就别说你学过编程!

不关注我们?那你会错过很多干货哦!十大数据结构之一——堆栈堆栈是一种常见的数据结构模型,也是学习编程的路上,必学的一门知识,我们经常使用的C/C++程序就涉及到了很多堆栈的概念,局部变量、申请的内存等,都是以堆栈结构存放的。

堆栈结构怎么理解呢?堆栈用一句话来表达就是:“先进后出,后进先出”,打个比方,堆栈是一个长方形的箱子,并且它只有一个出口(上面有一个标志),而现在我们要把一个与出口形状相同的方块放进箱子里,这个长方形箱子放满了5个方块,现在怎么把5个方块拿出来呢?答案是:“从出口一个一个往外拿”,而这个放方块和去方块的过程,就是堆栈存放和取出数据的过程。

长方形就相当于堆栈,出口相当于栈顶,箱底相当于栈底,放方块相当于入栈,取方块相当于出栈或退栈,出口上的标志相当于栈顶指示器。

打比方归打比方,在数据处理中,堆栈长度并不是像“箱子”的容积那样是不变的,而是会根据需求做出改变。堆栈是数据元素和数据元素之间的逻辑关系,并不是一种特定的“代码表现形式”,不是说代码要写成这样,或者那样,而是要利用代码实现这种数据元素的逻辑关系。下面为大家举一个例子开始上手!

「实战教学」C语言老手都会:不会这个,就别说你学过编程!

要使用堆栈,我们需要创建4个函数,分别是:堆栈初始化、检查堆栈是否为空、入栈、出栈。

检查堆栈是否为空在这我们使用循环语句,逐个检测堆栈里的每一个数据,栈底为-858993460(初始化的值)并且栈顶指示器为9(无数据)就说明该堆栈为空。由于该功能过于简单,所以小编将实现这个功能的代码块整合到了出栈函数中。

有些人可能会问,为什么有些人的栈顶指示器是-1,而你的是+1呢?因为,栈顶指示器只起到只是栈顶的作用,实际的值由你来决定,它甚至可以用字符表示。入栈入栈的第一步先判断,堆栈是否已经满了,如果没有满,则进行下一步操作,入栈这里,我们的栈顶指示器会-1,这个与出栈是相反的。

这四个函数写完了,接下来就是在主函数中使用他们了,具体的步骤可以在源码中看到。在这里说一下,这种方法创建的堆栈实用性不高,因为它的长度是固定的,并且这种以数组形式实现的堆栈比较浪费资源,内存就是一个例子。那怎么才能解决这个问题呢?我们不妨来试一试链式堆栈,在下一篇文章,《一碳科技》将让大家学会链式堆栈这一知识点。粉丝留言可以获取堆栈学习源码,提示一下:关注可以成为粉丝哦!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181015A06FUO00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券