计算机中的栈是啥

作者&投稿:可往 (若有异议请与网页底部的电邮联系)

计算机中的栈是一种运算受限的线性表。

栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

栈可以用来在函数调用的时候存储断点,做递归时要用到栈。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。

栈的作用

1、保存局部变量:函数里面也有可能要使用到局部变量,而不能总是用全局变量。则局部变量存储到哪里合适,即不能让函数嵌套的时候有冲突,又要注重效率。

2、参数传递:传递参数的目的,是为了代码可以重用,让一种方法可以应用到更多的场合,而不需要为N种情况写N套类似的代码。

3、保存寄存器的值:寄存器传参的冲突,可以把寄存器的值临时压入栈里面。

4、其他作用:栈是每个函数架构的基础,实现了函数的重复利用。问题发生的时候,可以利用栈来了解问题发生的情况。栈是构建出操作系统多任务模式的基础。



~

什么是堆?
答:堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:1 堆中某个节点的值总是不大于或不小于其父节点的值;2 堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。

堆栈有哪两种基本操作,它的含义是什么
答:机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,而物理上的数据结构反映成分数据在计算机内部的存储安排。数据结构是数据存在的形式。 数...

堆栈有什么作用?
答:堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。2、堆栈缓存方式 栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能...

带链栈怎么运算可以有top=bottom=20,如图?
答:一个,top=bottom=20表示栈顶和栈底指向同一个地址,中间没有其他的元素,就只剩一个同时指向的元素了。栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。当...

为什么栈的初始状态top等于m+1,则说明栈空时top=m+1?
答:这是因为栈的初始状态是确定的。而栈的初始状态,也就是栈空的状态。所以,如果当栈的初始状态top等于m+1。那栈空时的top就等于m+1了。栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个...

堆栈有什么作用吗,请举几个具体的例子
答:堆栈应用非常广的 栈LIFO(后进先出)1、洗盘子。用过的盘子一个一个叠放,那么最上面的盘子先洗,然后是下面的。2、递归函数返回地址。程序先执行的函数地址扔到最底下,直到递送到有明确返回值函数地址 后,在归回上一层处理它,直到最底部函数都处理完。

堆栈指针在什么情况下需要更改,修改时需要考虑什么
答:如果需要改变默认值,可以在初始化阶段使用如下指令:MOV SP, #6FH,即可将堆栈的底部设置在6FH。堆栈指针的作用就是指向栈顶元素的,还可以对栈顶元素进行出栈操作。当堆栈中的元素进行出栈或入栈操作时,都会使栈顶元素发生变化,堆栈指针sp就需要重新赋值,让其指向新的栈顶元素。

利用两个栈sl、s2模拟一个队列时,如何用栈的运算实现队列的插入、删除以...
答:令S1中元素的顺序为自底向上与元素添加顺序一致,S2与其相反,则:加入队列时,若S2不空,则将S2中的元素依次出栈,每出栈一个向S1中入栈一个;将入队元素入S1栈;从队列中取出时,若S1不空,则将S1中元素依次出栈,每出栈一个向S2中入栈一个;从S2栈顶出栈一个即队列中取出的元素。

令P代表入栈,O代表出栈.若利用堆栈将中缀表达式3*2+8/4转为后缀表达式...
答:入栈,然后出栈 +入栈,/入栈,然后分别出栈。栈使用一级缓存,他们通常都是被调用时处于存储空间中,调用完毕立即释放。堆则存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。

计算机基础最全自学指南!
答:这就造成很多同学懵圈,数据结构与算法有什么区别?甚至有些同学认为这就是一种。 其实吧: 数据结构主要讲解数据的组织形式。就是我们要怎样把这些数据存储起来,所以有数组、链表、栈、队列、树、图,这是数据结构的重点。 算法,则注重的是思想。比如数组里的元素怎么排序、怎么找到最大的数和最小的数等等。说白了...