一号热搜榜,为您提供最新的热搜资讯,热搜榜信息!

C语言中耳熟能详的“栈”到底是个什么东西?今天就带你捋清楚

百科热搜 作者:互联网收集 热度:199

C语言中耳熟能详的“栈”到底是个什么东西?今天就带你捋清楚

接触C语言那么久了,相信大家多多少少会接触到“栈”的概念。对于新手来说可能只是略有耳闻,并没有太深入去了解它。今天相当于给大家捋一捋“栈”的概念和相关的一些知识点,小白可以当预习,大牛可以......看看就好。

提到“栈”,就不能不提到我们在内存管理中提到的虚拟内存VM中的“栈空间”(没印象的朋友可以翻我前面一篇文章(把内存管理理解好,C语言真的不难学。今天带你“攻破”内存管理)。为什么它要叫“栈空间”,就是因为这个空间具有“栈”的逻辑特性。

栈的特点

卖了那么久关子,那栈到底是个啥东西?又有什么特性?

栈是一种逻辑结构,是特殊的一种线性表。特殊在于:



由于约定了只能在线性表固定的一端进行操作,于是给栈这种特殊的线性表的“插入”、“删除”,另起了下面这些特定的名称:

基于这种固定一端操作的简单约定,栈获得了“后进先出”的基本特性,如下图所示,最后一个放入的元素,最先被拿出来。(就好比说吃完饭之后洗碗,一个碗洗干净后会叠到另外一个碗上面,当你全部都洗好了就会把碗一个个放入到消毒柜里面,这时候拿的碗总是在顶部的那个。)


所谓“栈”只是一种数据逻辑,那如何把“栈”为我们而用来存放数据呢?讲道理在日常嵌入式开发中这种数据结构比较少用,如果需要用到这种数据结构,我们通常会用链式存储的形式形成所谓链式栈。


链式栈结点设计

初始化


入栈

出栈


关于“栈”就先给大家介绍那么多,有不清楚的朋友欢迎关注、留言。下一节会给大家分享“队列”的概念和知识点~

标签: C语言     耳熟能详     到底