设有一个空栈,栈顶指针为1000H,每个元素需要1个存储单元,在执行。Push、Push、Pop、Push、Pop、Push、Po
A.1002H
B.1003H
C.1004H
D.1005H
A.1002H
B.1003H
C.1004H
D.1005H
A.B、C
B.A、B
C.A、C
D.B、D
A、n个元素进入一个栈后,它们的出栈顺序一定与进栈顺序相反
B、若一个栈的存储空间为S[n],则对栈的进栈和出栈操作最多只能执行n次
C、栈是一种对进栈、出栈操作的次序做了限制的线性表
D、空栈没有栈顶指针
A.x=top;top=top->next;
B.x=top->data;
C.top=top->next;x=top->data;
D.x=top->data;top=top->next;
假设用一个长度为 50 的数组 (数组元素的下标从 0 到 49) 作为栈的 存储 空间,栈底指针 bottom 指向栈
底元素,栈顶指针 top 指向栈顶元素,如果 bottom=49 , top=30(数组下标 ) ,则栈中具有 【 1 】 个元素。
向一个栈顶指针为H的链栈中插入一个s所指向的结点时,需执行()。
A.H->link=s
B.s->link=H->link;H->link=s;
C.s->link=H;H=s;
D.s->link=H;H=H->link;
A.top→link=s;
B.s→link=top→link;top→link=s;
C.s→link=top;top=s;
D.s→link=top;top=top→link;
A.发生栈满的错误
B.2
C.m
D.0
●试题二
阅读下列函数说明和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) ;
}
}
}