设计一个“判别在表达式中左、右括号是否配对出现”的算法,采用______数据结构最佳。
A.线性表的顺序存储结构
B.栈
C.队列
D.线性表的链式存储结构
A.解释器(Interpreter) B.策略(Strategy) C.中介者(Mediator) D.迭代器(Iterator)
栈结构不适用于下列哪一种应用? ______。
A.表达式求值
B.树的层次次序遍历算法的实现
C.二叉树对称序遍历算法的实现
D.快速排序算法的实现
栈结构不适用于下列()应用。
A)表达式求值
B)递归过程实现
C)二叉树对程序周游算法的实现
D)树的层次次序周游算法的实现
栈结构不适用于下列(46)应用。
A.表达式求值
B.树的层次次序周游算法的实现
C.二叉树对称序周游算法的实现
D.快速排序算法的实现
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
函数print(BinTreeNode*t;DateType &x)的功能是在二叉树中查找值为x的结点,并打印该结点所有祖先结点。在此算法中,假设值为x的结点不多于一个。此算法采用后序的非递归遍历形式。因为退栈时需要区分右子树。函数中使用栈ST保存结点指针ptr以及标志tag,Top是栈顶指针。
【函数】
void print(BinTreeNode*t;DateType &x){
stack ST;int i,top;top=0;∥置空栈
while(t!=NULL &&t->data!=x‖top!=0)
{while(t!=NULL && t->data!=x)
{
∥寻找值为x的结点
(1) ;
ST[top].ptr=t;
ST[top].tag=0;
(2) ;
}
if(t!=Null && t->data==x){∥找到值为x的结点
for(i=1; (3) ;i++)
printf("%d",ST[top].ptr->data);}
else{
while((4) )
top--;
if(top>0)
{
ST[top].tag=1;
(5) ;
}
}
}