二叉树中序遍历的非递归算法如下所示。请填写算法中下划线的空白处。[br][/br]Status Inorder(BiTree T){[br][/br] InitStack(s);push(s,T); While ( (1)){[br][/br] While (gettop(s,p)&&p) push (s, (2)); pop(s,p); if(!StackEmpty(s)){ pop(s,p);printf( (3)); push(s, (4));[br][/br] }//if[br][/br] }//while[br][/br] return ok;[br][/br]}//Inorder[br][/br]注:[br][/br]InitStack(s);初始化一个栈s;[br][/br]push(s,p);将所指向的结点进s栈[br][/br];pop(s,p);s栈顶元素出栈;[br][/br]gettop(s,p);取s栈顶元素;[br][/br]StackEmpty(s);判栈s是否为空。
举一反三
- 经过以下栈运算后x的值是()。<br/>InitStack(); Push(s,a);<br/>Push(s,b); Pop(s,x); GetTop(s,x); A: a B: b C: 1 D: 0
- 请选出正确的程序段[br][/br]A)int*p; B)int*s,k;[br][/br]scanf("%d",p); *s=100;[br][/br]… …[br][/br]C)int*s,k; D)int*s,k;[br][/br] char*p,c; char*p,e;[br][/br] s=&k; s=&k;[br][/br] p=&c; p=&c; A: A)int*p;<br>scanf("%d",p);<br>… B: B)int*s,k;<br>*s=100;<br>... C: C)int*s,k;<br>char*p,c;<br>s=&k; D: D)int*s,k;<br>char*p,e;<br>s=&k;
- 以下函数的功能对应于 。[br][/br]int fun(char *s, char *t) {[br][/br]while( (*s)&&(*t)&&(*t==*s)){[br][/br]t++;[br][/br]s++;[br][/br]}[br][/br]return(*s-*t);[br][/br]} A: strlen(s)+strlen(t) B: strcmp(s,t) C: strcpy(s,t) D: strcat(s,t)
- 以下能正确计算1*2*3*……*10的程序段是( )。 A: do<br>{<br>i=1; s=1;<br>s*=i;<br>i++;<br>} while(i<=10); B: do<br>{<br>i=1; s=0;<br>s*=i;<br>i++;<br>} while(i<=10); C: i=1; s=1;<br>do<br>{<br>s*=i;<br>i++;<br>} while(i<=10); D: i=1; s=0;<br>do<br>{<br>s*=i;<br>i++;<br>} while(i<=10);
- 以下函数的功能是()。[br][/br]int fun(char *s)[br][/br]{ char *t=s;[br][/br] while(*t)[br][/br] t++;[br][/br] return (t-s);[br][/br]} A: 比较两个字符串的大小 B: 计算s所指字符串占用的内存字节数 C: 计算s所指字符串的长度 D: 将s所指字符串复制到字符串t中