1. 简述下列程序段的功能。
PROC algo(VAR S : stack; k:integer);
VAR T: stack; temp: integer;
WHILE NOT empty(S) DO
[temp:=POP(S); IF temp<>k THEN PUSH(T,temp)];
WHILE NOT empty(T) DO [temp:=POP(T);PUSH(S,temp)];
正确答案
PS:||代表注释
1、本程序段查找栈S中有无整数为k的元素,如有,则删除。采用的办法使用另一个栈T。在S栈元素退栈时,若退栈元素不是整数k,则压入T栈。遇整数k,k不入T栈,然后将T栈元素全部退栈,并依次压入栈S中,实现了在S中删除整数k的目的。若S中无整数k,则在S退成空栈后,再将T栈元素退栈,并依次压入S栈。直至T栈空。这后一种情况下S栈内容操作前后不变。
君子严如介石而畏其难亲,鲜不以明珠为怪物而起按剑之心;小人滑如脂膏而喜其易合,鲜不以毒螫为甘饴而纵染指之欲。