×

堆栈在C语言中的定义是怎么样的

消耗积分:1 | 格式:pdf | 大小:0.16 MB | 2019-04-23

王强

分享资料个

  在计机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助。

  首先了解下计算机C语言中各个变量的存放区域:

  代码区(CODE): 存放函数代码;

  静态数据区(DATA): 存放全局变理/静态变量;

  堆区(HEAP): 是自由存储区,存放动态数据,像new,malloc()申请的空间就是堆区的;

  栈区(STACK): 存放临时/局部变量。

  数据结构的栈和堆

  首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。

  栈就像装数据的桶或箱子

  我们先从大家比较熟悉的栈说起吧,它是一种具有 后进先出 性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。

  堆像一棵倒过来的树

  而堆就不同了,堆是一种 经过排序的树形数据结构 ,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,常用来实现优先队列, 堆的存取是随意 ,这就如同我们在图书馆的书架上取书,虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样,先取出前面所有的书,书架这种机制不同于箱子,我们可以直接取出我们想要的书。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !