⑴ 设栈的顺序存储空间为 S(1:m),初始状态为top=-1,则栈中的数据元素个数为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.
手打不易,供大家评阅,互相交流,如果有用,烦请回复,只想知道大家得到了帮助,希望大家能喜欢。
⑵ 设栈的存储空间为S(1:50),初始状态为top=0,现经过一系列正常的入栈与退栈操作后,top=
栈的顺序存储空间为S(1:50),初始状态为top=0。
top可以理解为如果要再放入一个元素,这个元素存放的位置为top—1,top=0,top—1=—1,显然不可能在存放下一个元素,所以初始状态为满,经过一系列操作,top为30,同理,如果要再存放一个元素,位置为30—1=29,所以现在30是有元素的,30到50,一共为21个元素,所以答案为21。
⑶ 设栈的存储空间为 S(1:50)初始状态为 top=-1。经过入栈与退栈操作后,top=30,则栈中的元素个数为3130
元素的标号是从0开始的,其元素数量应该是N+1,即30+1=31个元素。
⑷ 栈式存储管理策略是什么
程序运行时的存储组织及管理
栈式动态存储分配策略是将整个程序的数据空间设计为一个栈(称为运行蔽纯时栈) 每当程物前序调用一个过程(进入一个块)时,就在栈顶为被调过程分配宏蚂咐一个新的数据空间 保留块的开始地址:基地址寄存器(BASE,或用sp) 为当前块分配存储:在栈顶留出相应单元,作为当前数据区 为每个局部量分配相对地址,填入符号表(a d r adradr属性)。
⑸ 设栈的存储空间为S(1:m),初始状态为top=m+1 怎么理解
m+1 。
这个栈是从栈顶向栈底压的,一般平时是从栈底向栈顶压,这道题目中是倒过来的。
若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出);置TOP=TOP+1(栈指针加1,指向进栈地址);S(TOP)=X,结束(X为新进栈的元素)。
若TOP≤0,则给出下溢信息:
作出错处理(退栈前先检查是否已为空栈, 空则下溢);X=S(TOP),(退栈后的元素赋给X):TOP=TOP-1,结束(栈指针减1,指向栈顶)。
定义stack的简单代码:
stack<int> sta。
入栈:sta.push(x)。
出栈:sta.pop()。
判断栈的大小: sta.size()。
判断栈是否为空:sta.empty()。
⑹ 设栈的顺序存储空间为 S(1:m),初始状态为top=-1,则栈中的数据元素个数为top+1
是不理解这段话吗?top在栈里指向的是栈顶的元素,top的值就是元素所在位置(第几个,从0开始)。无元素时指向-1位置,此时栈为空。所以,元素个数为尺则正top+1,就盯颂是指向-1时个数为0,指向第0个时个数为1,指向第1个时个数为2,以此类推。陵悔栈的数据执行的是后进先出策略,就是删的时候先删除最上面的数据(见下图),进数据的时候也是放到最上面。
⑺ 如何设置堆栈空间在中断响应时哪些变量值要入栈
切换任务可以看做是一种中断服务程序指针局存器,数据寄存器是必须要保存到堆栈的,在中断任务完成之后在出栈继续工作。i/o寄存器有内部锁存功能,所以不必保存。
针对栈这种数据结构的基本操作有两种:压栈和弹出,在栈帧中包含两个标志----栈底和栈顶,其中栈顶标识着要push或pop的数据的地址,而栈底则表示栈帧中最后一个数据的内存地址。
在Win32中,寄存器esp存放着栈底指针,栈是向低地址方向生长,因此esp指向栈顶元素堆栈对比(操作系统):由编译器自动分配释放,存放函数的参数值,局部变量的值等。
堆栈
是一个特定的存储区或寄存器,它的一端是固定的,另一端是浮动的。堆这个存储区存入的数据,是一种特殊的数据结构。
所有的数据存入或取出,只能在浮动的一端(称栈顶)进行,严格按照“先进后出”的原则存取,位于其中间的元素,必须在其栈上部(后蔽哗进棚或栈者)诸元素逐个移出后才能取出。在内存储器(随机存储器)中开辟一个区域作为堆栈,叫软件堆栈;宏和行用寄存器构成的堆栈,叫硬件堆栈。
⑻ 设栈的存储空间为S(1:m),初始状态为TOP=m+1。经过一系列入栈与退栈操作后,TOP=m
m+1 。
这个栈是从栈顶向栈底压的,一般平时是从栈底向栈顶压,这道题目中是倒过来的。
若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出);置TOP=TOP+1(栈指针加1,指向进栈地址);S(TOP)=X,结束(X为新进栈的元素)。
(8)存储空间设栈扩展阅读:
若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢);X=S(TOP),(退栈后的元素赋给X):TOP=TOP-1,结束(栈指针减1,指向栈顶)。
定义stack的简单代码:
stack<int> sta;
入栈:sta.push(x);
出栈:sta.pop();
判断栈的大小: sta.size();
判断栈是否为空:sta.empty();
⑼ 设栈的顺序储存空间为s(1:50),初始状态为top=51,现经过一系列正常的入栈 与退栈操作后,
50-20+1=31
⑽ 设栈的储存空间为S(1:50),初始状态为top=51
栈的结构是后进先出,初始状态为top=51,即 索引为51,入栈的时候他的索引如下
a1 = 50
a1 = 49 a2 = 50
a1 = 48 a2 = 49 a3 = 50
a1 = 1 a2 = 2 ..... a50 = 50
出栈的时候反过来,a1作为最后一个元素,他的索引就是50