请问一下c++中的栈先进先出吗?堆又是如何的?

c++中的栈先进先出吗?堆又是如何的?


慕容708150
浏览 1467回答 3
3回答

慕田峪4524236

假设有一种盘子,有很多,你一次只能搬得动一个,你有时要把它们一个一个摞起来放在一个墙角,有时候又要拿出去用。想象下这种情况,是不是每次从那一摞盘子中只能拿最上面的呢,因为你只能每次搬动一个。如果你每次要放回盘子,是不是也只能放到最上面呢,除非把最上面的一个一个往下搬,然后一个一个搬回去,才能放到中间。这个所谓的其实就是栈了。至于你想说堆嘛,其实并不是一种数据结构,而是有一定的计算机组成的意味了,是一个逻辑上的概念,和栈不同,因为栈是一种数据结构。例如在操作系统里面会有系统堆,系统栈,在算法里面的堆排序里面也有大头堆,小头堆,其实只是一个概念,并不是数据结构,需要在特定的环境下理解。比如说java中的栈就是指向对象存放的位置,而堆却是由对象来创立的用来存放对象的相关属性和方法。

HUH函数

1、栈区(stack)— 由编译器自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中堆是两回事,分配方式倒是类似于链表。

慕斯709654

栈、队都是模拟现实的一种程序表达方式。栈就是先进后出的一种数据结构,所谓的先进后出就是越是先进去的数据越后出来。那什么样的情形会出现先进去后出来呢?一个有尽头的单人栈道就是这样的。第一人进去了,第二个人进去了。。。。第n个人进去了。第一个人要想出来,必须第二个人先出来。第二个人要想出来,必须第三个人先出来。以此类推。这就叫栈。第一个人先进去的,但是要出来的话,第一个人确实最后一个出来的。队就是先进先出的一种数据结构,如果你了解了先进后出的话,先进先出就很好理解了。它就是一个两头想通的并且不能后退的通道。就像排队,第一个人进去,买过票以后从前面出来了,第二个人继续。所以叫先进先出
打开App,查看更多内容
随时随地看视频慕课网APP