为什么栈的初始状态top等于m+1,则说明栈空时top=m+1?
发布网友
发布时间:2022-04-24 04:48
我来回答
共3个回答
懂视网
时间:2022-04-24 09:10
栈的初始状态简单的说其实就是:在栈中还没有将元素进行进栈或者出栈的运动时,栈本身最开始的状态(也就是说:在没有进行元素的进出栈时,栈中的栈顶指针和栈底指针所指向的位置这样一个状态)。
栈它是一种具有后进先出性质的数据结构,也就是说后存放的先取,先存放的后取。这就如同要取出放在箱子里面底下的东西(放入的比较早的物体),首先要移开压在它上面的物体(放入的比较晚的物体)。内存中的栈区处于相对较高的地址以地址的增长方向为上的话,栈地址是向下增长的。栈中分配局部变量空间,堆区是向上增长的用于分配程序员申请的内存空间。另外还有静态区是分配静态变量,全局变量空间的;只读区是分配常量和程序代码空间的;以及其他一些分区。
由于栈上的空间是自动分配自动回收的,所以栈上的数据的生存周期只是在函数的运行过程中,运行后就释放掉,不可以再访问。栈在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
热心网友
时间:2022-04-24 06:18
这是因为栈的初始状态是确定的。而栈的初始状态,也就是栈空的状态。所以,如果当栈的初始状态top等于m+1。那栈空时的top就等于m+1了。
栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。
栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。当压入第一个元素时,TOP指针指向m+1-1 = m当压入第二个元素时,TOP指针指向m+1-2 = m-1。以此类推,当压入第N个元素时,TOP指针指向m+1-N = 20则N = m+1-20 = m-19。
扩展资料:
栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为先进后出表。
在计算机系统中,栈则是一个具有以上属性的动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。在i386机器中,栈顶由称为esp的寄存器进行定位。压栈的操作使得栈顶的地址减小,弹出的操作使得栈顶的地址增大。
参考资料来源:百度百科-栈
热心网友
时间:2022-04-24 07:36
这是因为栈的初始状态是确定的。而栈的初始状态,也就是栈空的状态。所以,如果当栈的初始状态top等于m+1。那栈空时的top就等于m+1了。
为什么栈的初始状态top等于m+1,则说明栈空时top=m+1?
这是因为栈的初始状态是确定的。而栈的初始状态,也就是栈空的状态。所以,如果当栈的初始状态top等于m+1。那栈空时的top就等于m+1了。栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个元...
我没学过数据结构,但是考计算机二级涉及到这方面的知识点,这道题怎么...
针对这一题,这个栈是从栈顶向栈底压的,一般平时是从栈底向栈顶压,这道题目中是倒转过来的。top=m+1,如果放了一个元素,那么TOP就等于m+1-1 =m,这个时候正好top=m,说明往里放入了一个元素,现在再退出一个元素,正好还原,所以top=m+1。你可以理解成一个弹夹。
怎样判断栈的开口方向?
top是栈顶。初始状态就是空栈状态此时栈顶等于栈底。压栈top变动变到50。栈顶指针是在最上面的,栈的顺序存储空间为S(1: m),不管出栈进栈,都是栈顶指针在移动,因为初始状态为top=m+1,所以就是开口向下的。栈的顺序存储空间为S(1: m),初始状态为top=m+1,如果是正常情况下,应该是1,...
设栈的存储空间为S(1:m),初始状态为TOP=m+1。经过一系列入栈与退栈操 ...
m+1 。这个栈是从栈顶向栈底压的,一般平时是从栈底向栈顶压,这道题目中是倒过来的。若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出);置TOP=TOP+1(栈指针加1,指向进栈地址);S(TOP)=X,结束(X为新进栈的元素)。
c语言,栈的问题,怎么算的,(1:m)什么意思
意思是说这个栈存储空间的编号是1到m,栈顶的编号是从1开始,栈底编号为m.
栈的初态为什么是top=m+1
因为top是指向最后一个元素上面的那个,所以是m+1 。栈的顺序存储空间为S(1:50),初始状态为top=0。现经过一系列入栈与退栈运算后,top=20,则栈顶-栈底=20-0=20个元素。栈是向上增长的,每次压入一个元素,栈的TOP指针向上移动一位。当压入第一个元素时,TOP指针指向m+1-1 = m当压入...
设栈的顺序存储空间为 S(1:m),初始状态为top=-1,则栈中的数据元素个数...
初始状态为top=-1,说明栈空时top=-1;入栈时栈顶指针是加操作,每入栈一个元素,则栈顶指针top的值加1。故栈中元素的个数应为top+1.当初始状态为top=m+1时,栈空时top指针为m+1,入栈时栈顶指针是减操作,每入一个,则top减1,设此时 元素为x,则m+1-x=top,可得元素个数为x=m-...
关于数据结构的,为什么栈空top是-1,top=0是指向栈顶下一个元素,在共享...
栈里没元素就是空闲,表示时,指针不指向有效空间即可。若是链表,用指针类型,就要用null表空。用数组则可用整数型,这里top放为-1是运算方便,可以加减一就进出栈。实际上放-2也是可表栈空但运算不便。另一端,同样,一个越界值表空,max最好用。
设栈的顺序存储空间为 S(1:m),初始状态为top=-1,则栈中的数据元素个数...
第几个,从0开始)。无元素时指向-1位置,此时栈为空。所以,元素个数为top+1,就是指向-1时个数为0,指向第0个时个数为1,指向第1个时个数为2,以此类推。栈的数据执行的是后进先出策略,就是删的时候先删除最上面的数据(见下图),进数据的时候也是放到最上面。
c语言栈的top是什么意思?
故栈长top-1,栈满条件:top==N-N=0。因为用一个长度为n的数组顺序储存一个栈然而数组是从0~n-1栈空为top==n那么栈满为top==1。t数组长度固定为n,则可存储n个元素,top=n表示栈空,向栈中插入一个元素后,top-1=n-1,n个元素存储完了就满栈了,top的值就等于0了。