什么叫堆栈?

作者&投稿:道禄 (若有异议请与网页底部的电邮联系)
什么叫做堆栈?~

堆和栈是两个不同的概念。 堆(heap)上分配的内存,系统不释放,而且是动态分配的。栈(stack)上分配的内存系统会自动释放,它是静态分配的。运行时栈叫堆栈。栈的分配是从内存的高地址向低地址分配的,而堆则相反。由malloc或new分配的内存都是从heap上分配的内存,从heap上分配的内存必须有程序员自己释放,用free来释放,否则这块内存会一直被占用而得不到释放,就出现了“内存泄露(Memory Leak)”。这样会造成系统的可分配内存的越来越少,导致系统崩溃。 堆栈是一种执行“后进先出”算法的数据结构。 设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构的特点。 堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做“栈底”。数据一个一个地存入,这个过程叫做“压栈”。在压栈的过程中,每有一个数据压入堆栈,就放在和前一个单元相连的后面一个单元中,堆栈指示器中的地址自动加1。读取这些数据时,按照堆栈指示器中的地址读取数据,堆栈指示器中的地址数自动减 1。这个过程叫做“弹出pop”。如此就实现了后进先出的原则。 而堆栈寄存器就是存放堆栈的寄存器。

  在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。
  堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。
  要点:
  堆:顺序随意
  栈:后进先出(Last-In/First-Out)

堆栈的概念

堆栈(Stack)是一种比较重要的线性数据结构,如果对数据结构知识不是很了解的话,我们可以把它简单的看作一维数组。但是对一维数组进行元素的插入、删除操作时,可以在任何位置进行,而对于栈来说,插入、删除操作是固定在一端进行的,这一端称为栈顶(top),另一端称为栈底(bottom),向栈中插入数据的操作称为压入(Push),从栈中删除数据称为弹出(Pop)。

二 堆栈的存储方式

对栈中元素的操作是按后进先出(Last In First Out,简称LIFO)的原则进行的,即最后压入的元素最先弹出。

在栈的操作过程中,有一个永远指向栈顶的栈顶指针,在压入和弹出数据时,栈顶指针向上或向下移动。当栈顶指针为零时(即指向栈底的后面),栈为空栈。如果压入的数据过多超出了栈的最大空间,则发生栈上溢。

在程序设计中,我们可以使用一维数组实现对栈的操作。假设用一维数组s[1..arrmax]表示栈,则对于非空栈,s[1]为最早压入栈的元素,同时设栈顶指针top,则s[top]为最后压入栈的元素。当top=arrmax时栈满,若此时有数据入栈将产生“数组越界”的错误,极为栈上溢,反之当top=0,意为栈空。

堆栈是内存区开辟出来为函数中定义的变量(除了new以外的定义)提供存储空间的区域。
顾名思义,数据在堆栈中 的存储就是一个一个堆上去的,就是说后放的变量存在最上面(栈顶),所以从堆栈中取出变量时它最先被取出,(后进先出)。


什么是堆栈?堆栈的操作方式有哪两种?
堆栈是一种执行“后进先出”算法的数据结构。堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。有一个地址指针总指向最后一个压入堆栈的数据所在的数据单元,存放这个地址指针的寄存器就叫做堆栈指示器。开始放入数据的单元叫做...

啥叫堆?啥叫栈
堆和栈的区别:一、堆栈空间分配区别:1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈;2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分式倒是类似于链表。二、堆栈缓存方式区别:1、栈使用...

什么叫堆栈?AT89S51中堆栈的最大容量是多少?
【答案】:所谓堆栈,是指一个连续的数据存储区域,其操作原则为“先进后出”或“后进先出”。AT89S51中堆栈的最大容量理论上可以达到128B。

堆栈是什么意思
在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构。要点:堆:顺序随意 栈:先进后出 堆和栈的区别 一、预备知识—程序的内存分配 一个由c\/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的...

堆栈到底是个怎么回事?
堆栈是一种执行“后进先出”算法的数据结构。设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构...

在单片机中什么是堆栈?它的作用是什么?
在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。堆栈是一个特定的存储区或寄存器,它的一端...

网络堆栈什么意思
堆栈是什么意思?1、堆栈就是这样一种数据结构。它是在内存中开辟一个存储区域,数据一个一个顺序地存入(也就是“压入——push”)这个区域之中。2、问题二:什么叫堆栈堆栈是内存区开辟出来为函数中定义的变量(除了new以外的定义)提供存储空间的区域。3、堆栈是一个特定的存储区或寄存器在计算机领域...

堆栈是什么~!
堆栈是单片机内具有特定用途的一块内存区,试想一下,单片机当前正在执行一段程序,突然来了中断,CPU要放下当前的工作去处理中断,完成以后在继续执行原来的工作 为了完成这个工作,转入中断以前,首先需要将当前程序的位置保存起来,进入中断程序以后,为了不破坏原来的工作现场,需要将用到的资源进行保护,...

什么是堆栈和指针,请生动的简单的解释一下
堆栈是一种执行“后进先出”算法的数据结构。设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种结构...

python中的堆栈什么意思
堆栈是一种执行“后进先出”算法的数据结构。设想有一个直径不大、一端开口一端封闭的竹筒。有若干个写有编号的小球,小球的直径比竹筒的直径略小。现在把不同编号的小球放到 竹筒里面,可以发现一种规律:先放进去的小球只能后拿出来,反之,后放进去的小球能够先拿出来。所以“先进后出”就是这种...

怀集县15324481971: 堆栈 - (数据结构) - 搜狗百科
延很强肝: 堆栈是一种执行“后进先出”算法的数据结构.设想有一个直径不大、一端开口一端封闭的竹筒.有若干个写有编号的小球,小球的直径比竹筒的直径略小.现在把不同编号的小球放到竹筒里面,可以发现一种规律:先放进去的小球只能后拿...

怀集县15324481971: 堆栈是什么概念 -
延很强肝: 堆栈是一个在内存中开辟的 用于存放数据的空间它的扩展方向是从内存的大地址向小地址扩展用于存放函数调用时候的参数传递static变量存放在程序的静态内存区.是在程序的后面最靠近前端的地方

怀集县15324481971: 堆栈的意思是? -
延很强肝: 什么是堆栈 在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构. 堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除. 要点: 堆:顺序随意 栈:后进先出(Last-In/First-Out) 摘自百度

怀集县15324481971: 什么是堆栈?
延很强肝: 什么是堆栈在计算机领域,堆栈是一个不容忽视的概念,但是很多人甚至是计算机专业的人也没有明确堆栈其实是两种数据结构.要点:堆:顺序随意栈:先进后出堆和栈的区别一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内...

怀集县15324481971: 什么叫做堆栈? -
延很强肝: 堆和栈是两个不同的概念. 堆(heap)上分配的内存,系统不释放,而且是动态分配的.栈(stack)上分配的内存系统会自动释放,它是静态分配的.运行时栈叫堆栈.栈的分配是从内存的高地址向低地址分配的,而堆则相反.由malloc或...

怀集县15324481971: 堆栈是什么意思? -
延很强肝: 堆栈是对计算机内存的划分,其中堆的空间较大,而栈要小些,从堆中读取数据要比栈的慢.如果要学编程则要对这方面要有了解

怀集县15324481971: 什么是堆栈 -
延很强肝: 堆栈是堆放货物的仓库.从地面起自下而上堆放的货物总是“先进后出”的. 在计算机中,堆栈是用来存放临时需要暂时储存的数据的存储器.是读写存储器RAM中的一个特殊的区域,是一组按照“先进后出”的方式工作的、用于暂存信息的存储单元.

怀集县15324481971: 什么是堆,什么是栈 -
延很强肝: 在计算机科学中,堆栈(stack)是一种特殊的链表形式的数据结构,它的特殊之处在于只能允许在链表的一端(称为栈顶,英文为top)进行添加和删除操作.另外堆栈数据结构的实现也可以通过数组来完成.就是数据的一中存储方式,通常在递归的时候用的.

怀集县15324481971: 堆栈和栈是什么意思 -
延很强肝: 堆和栈是两个不同的概念,堆是动态内存,malloc,new等操作在堆里面分配空间;栈里面放函数调用参数,局部变量. 对专业人士而言,一般习惯把堆和栈分开来讲.有些地方也把栈笼统地叫做堆栈,也就是说你这里说的堆栈就是指栈.你只要搞清楚堆和栈的区别就可以了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网