栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是

jackykukuqi2022-10-04 11:39:541条回答

栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是
题干中说第五个元素E入栈前,ABCD可以出栈,那是不是说E就要ABCD全部出栈之后,E才可以进栈,出栈呢!为什么答案是DCBEA.为什么A是最后一个出栈的呢,

已提交,审核后显示!提交回复

共1条回复
limi80 共回答了26个问题 | 采纳率96.2%
入栈前 没有说全部都出栈, 所以说不是全部出栈之后再让E进栈,出栈.
个人理 他是说E入栈前可以出栈 就是说DCB均可以在E进栈前出栈 此时就是出栈有DCB,之后E进栈 栈中元素为AE 再出栈就是EA 最后出栈顺序就是DCBEA了 答案应该不唯一吧 他不是说“可能”么
1年前

相关推荐

关于相对基址变址寻址,SP堆栈指示器.它始终是指向栈顶元素.而BP不是.为什么不用SP而用BP呢?难道就是因为BP是基址
关于相对基址变址寻址,SP堆栈指示器.它始终是指向栈顶元素.而BP不是.为什么不用SP而用BP呢?难道就是因为BP是基址寄存器.BP能指向栈顶吗?SP又有什么用?3 f$ Y5 `( %
rho461年前1
C水灵儿 共回答了9个问题 | 采纳率88.9%
SP是堆栈指针寄存器,专门用来维护堆栈的,诸如POP,PUSH,CALL等指令都是跟SP相关的,所以SP对于程序来说是应该是只读的,而实际上你可以手动设置SP的值.如果用SP作为基地址的话,会出错的.而BP是堆栈的基址指针,如果不使用段超越标志的话,BP实际上是SS:BP,就像SI默认是DS:SI ,DI默认是ES:DI,这是一样的道理.
BP在C语言程序中使用广泛,例如下面的C程序编译为汇编应该是这样
//C:
int sum(int a,int b )
{
DoSometing();
return a+b;
}
...//在其他的函数中
c=sum(1,2);
...
;ASM:
sum proc
push bp
mov bp,sp ;将sp的值送到bp,让bp指向栈顶
call DoSomething
mov ax,[bp+4] ;[bp+4] = a
add ax,[bp+6] ;[bp+6] = b
pop bp
ret 4
sum endp
...;在其他的函数中
mov ax,2 ;第二个参数
push ax
mov ax,1 ;第一个参数
push ax
call sum
mov addr_c,ax ;addr_c是我假定的c变量的地址.
...
从以上的例子看来,使用BP是正确的,而不应该是SP,SP是专用寄存器,不要动它为好.将它的值送给BP就行了,不管你之后执行了inc bp 还是 add bp,2,都不会影响堆栈的工作.
4个元素进S栈的顺序是A、B、C、D,进行两次pop操作后,栈顶元素的值是
zzssgghhrr1年前1
ewtewgui 共回答了13个问题 | 采纳率92.3%
进站依次是 ABCD
Pop 一次 ABC
Pop一次 AB
栈顶元素 B
若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1
若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈
2的底在V[m],则栈满的条件是( ).
A.|top[2]-top[1]|=0 B.top[1]+1=top[2] C.top[1]+top[2]=m D.top[1]=top[2]
选择哪个?为什么
羽琳翎1年前1
病了吧 共回答了19个问题 | 采纳率94.7%
晕.这么简单的问题也拿出来问
1 2 3 .m
| |
那么当他们满的时候,两个指针相邻
那就是
top[1]+1=top[2]
top[1]在top[2]左边相邻了
下列关于栈叙述正确的是()A、栈顶元素最先能被删除B、栈底元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素是最先
下列关于栈叙述正确的是()
A、栈顶元素最先能被删除
B、栈底元素最后才能被删除
C、栈底元素永远不能被删除
D、栈底元素是最先能被删除的
B为什么不对啊
shenhao004121年前1
汉将 共回答了17个问题 | 采纳率94.1%
B是正确的,题目有误,原来的问题是B)栈顶元素最后才能被删除
3.假设用向量S[1:m]来存储顺序栈,指针top指向当前栈顶的位置.则当栈为空时满足的条件是___top=0_____
3.假设用向量S[1:m]来存储顺序栈,指针top指向当前栈顶的位置.则当栈为空时满足的条件是___top=0______
53631181年前2
foshelan 共回答了23个问题 | 采纳率91.3%
s->top=-1
原因:s->top表示栈中元素,初始条件s->top=-1(此时为空栈);当进栈一个元素s->top++(表示s->top加1)
补充问题的意思是“STACK1和STACK2放在同一个STACK中”吧?
那么STACK2栈底应该是stack->top=stack1->top1+1
二叉树的遍历对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶
二叉树的遍历
对任意给定的二叉树(顶点数自定)建立它的二叉链表存贮结构,并利用栈的五种基本运算(置空栈、进栈、出栈、取栈顶元素、判栈空)实现二叉树的先序、中序、后序三种遍历,输出三种遍历的结果。
54魚1年前1
gemtin 共回答了15个问题 | 采纳率86.7%
昨天U盘上还在。。。。。。。擦,刚删除,三种都编好的
数据结构的问题?由于栈的插入和删除都是在栈顶进行的,所以栈具有___的特点。每次使两个相邻的有序表合并成一个有序表,这种
数据结构的问题?
由于栈的插入和删除都是在栈顶进行的,所以栈具有___的特点。
每次使两个相邻的有序表合并成一个有序表,这种排序方法叫做___排序
秃尾猫1年前1
邦道ss 共回答了23个问题 | 采纳率82.6%
先进后出
归并排序
向一个栈顶指针为HS的链栈中插入一个s结点时,则执行、s->next=HS;HS=s; 还是HS->next=s;HS=
向一个栈顶指针为HS的链栈中插入一个s结点时,则执行、s->next=HS;HS=s; 还是HS->next=s;HS=s;
real_lady_killer1年前1
wasd258 共回答了14个问题 | 采纳率85.7%
如果将s入栈到栈顶位置,则是:
s->next = HS;
HS = &s;
因为HS当前指向栈顶元素,如果先HS->next =s; 则原来的栈顶元素的next指针就指向s了.

大家在问