请教各位老师一道关于栈的一道题。求详解
设栈的存储空间为S(1:50),初始状态为top=51.现经过一系列正常的入栈与退栈操作后,top=20,则栈中的元素个数为( )? 31 傻眼貓咪 发表于 2021-10-11 16:2231
不明白,我需要详解,我很笨啊 栈的初始状态top=51,故本栈是51在栈底,入栈时栈顶指针是减操作(top=top-1),退栈时栈顶指针是加操作(top=top+1)。当top=20时,元素存储在(20:50)空间中,因此共有50-20+1=31个元素。 把栈想象成水坝,51尺为最深度(越深数字越大,越浅数字越小),当水坝空时,水位当然就是最低的51尺,试问如果水位在20尺时,水的高度是多少? 傻眼貓咪 发表于 2021-10-12 09:19
栈的初始状态top=51,故本栈是51在栈底,入栈时栈顶指针是减操作(top=top-1),退栈时栈顶指针是加操作(top= ...
top指针不是指向低地址处吗?入栈应该是加啊 本帖最后由 傻眼貓咪 于 2021-10-12 13:03 编辑
huyanmin 发表于 2021-10-12 12:52
top指针不是指向低地址处吗?入栈应该是加啊
1.进栈(PUSH)
①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出;不满则作②);
②置TOP=TOP+1(栈指针加1,指向进栈地址);
③S(TOP)=X,结束(X为新进栈的元素);
2.出栈(POP)
①若TOP≤0,则给出下溢信息,作出错处理(退栈前先检查是否已为空栈, 空则下溢;不空则作②);
②X=S(TOP),(退栈后的元素赋给X):
③TOP=TOP-1,结束(栈指针减1,指向栈顶)。 本帖最后由 huyanmin 于 2021-10-12 17:31 编辑
傻眼貓咪 发表于 2021-10-12 12:57
1.进栈(PUSH)
①若TOP≥n时,则给出溢出信息,作出错处理(进栈前首先检查栈是否已满,满则溢出; ...
还是不明白,这道题能够画图讲解吗?我还没有入门。再有,本题栈的存储空间为S(1:50),初始状态为top=51.岂不是溢出了 可能我解说不是很清楚,网络爬文应该比我清楚 傻眼貓咪 发表于 2021-10-12 18:43
可能我解说不是很清楚,网络爬文应该比我清楚
还是不明白,我的脑袋不开窍了 huyanmin 发表于 2021-10-12 20:19
还是不明白,我的脑袋不开窍了
抱歉,可能我解说不完善吧,不过你这题网络很多人解说,说不定有你明白的
页:
[1]