经过以下栈运算后,x的值是 。 InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s.x);A.aB.bC.0D.1

经过以下栈运算后,x的值是 。 InitStack(s);Push(s,a);Push(s,b);Pop(s,x);GetTop(s.x);

A.a

B.b

C.0

D.1


参考答案和解析
B

相关考题:

试题四阅读以下说明和C代码,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n, int B)的功能是:将一个无符号十进制整数n转换成B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:#define MAXSIZE 32typedef struct {int *elem; /* 栈的存储区 */int max; /* 栈的容量,即栈中最多能存放的元素个数 */int top; /* 栈顶指针 */}Stack;[C代码]int InitStack(Stack *S, int n) /* 创建容量为n的空栈 */{ S-elem = (int *)malloc(n * sizeof(int));if(S-elem == NULL) return -1;S-max = n; (1) = 0 ; return 0;}int Push(Stack *S, int item) /* 将整数item压入栈顶 */{ if(S-top == S-max){ printf("Stack is full!\n"); return -1;}(2) = item ; return 0;}int StackEmpty(Stack S) { return (!S.top) ? 1 : 0; } /* 判断栈是否为空 */int Pop(Stack *S) /* 栈顶元素出栈 */{ if(!S-top) { printf("Pop an empty stack!\n"); return -1;}return (3) ;}void MultibaseOutput(long n, int B){ int m; Stack S;if (InitStack(S, MAXSIZE)) {printf("Failure!\n"); return;}do {if (Push(S, (4) )) {printf("Failure!\n"); return;}n = (5) ;}while(n != 0);while(!StackEmpty(S)) { /* 输出B进制的数 */m = Pop(S);if(m 10) printf("%d", m); /* 小于10,输出数字 */else printf("%c", m + 55); /* 大于或等于10,输出相应的字符 */}printf("\n");}

在以下栈的基本运算中,不是加工型运算的是() AlnitStack(S)BPush(S,X)CPop(S)Dempty(S)

通过对堆栈S操作:Push(S,1),Push(S,2),Pop(S),Push(S,3),Pop(S),Pop(S)。输出的序列为:123。() 此题为判断题(对,错)。

阅读以下说明和C程序代码,将应填入______处的语句写在答题纸的对应栏内。[说明]函数MultibaseOutput(long n,int B)的功能是:将一个无符号十进制整数n转换成 B(2≤B≤16)进制数并输出。该函数先将转换过程中得到的各位数字入栈,转换结束后再把B进制数从栈中输出。有关栈操作的诸函数功能见相应函数中的注释。C代码中的符号常量及栈的类型定义如下:define MAXSIZE 32typedef struct{int * elem; /* 栈的存储区 */int max; /* 栈的容量,即栈中最多能存放的元素个数 */int top; /* 栈顶指针 */}Stack;[C代码]int InitStack(Stack * S,int n) / * 创建容量为n的空栈 */{ S->elem=(int *)malloc(n * sizeof(int));if(S->elem==NULL)return-1;S->max=n; (1)=O;return 0;}int Push(Stack * S,int item) / * 将整数item压入栈顶 * /{ if(S->top==S->max){ printf(“Stack is full! \n”);return-1;}(2)=item;return 0;}int StackEmpty(StackS) {return (! S.top)? 1:0;} / * 判断栈是否为空 * /int Pop(Stack *S ) / * 栈顶元素出栈 * /{ if(! S->top){printf(“Pop an empty stack! \n”);return-1;}return (3);}void MultibaseOutput(long n,int B){ int m;StackS;if (InitStack(S,MAXSIZE)){printf(“Failure! \n”);return;}do {if(Push(S, (4) )){printf(“Failure! \n”);return;}n=(5);}while(n!=0);while(! StackEmpty(S)){ / * 输出B进制的数 * /m=Pop(S);if(m<10)printf(“%d”,m); / * 小于10,输出数字 * /else printf(“%c”,m+55); / * 大于或等于10,输出相应的字符 * /}printf(“\n”);}

输入序列为ABC,可以变为CBA时,经过的栈操作为()。A.push,pop,push,pop,push,popB.push,push,push,pop,pop,popC.push,push,pop,pop,push,popD.push,pop,push,push,pop,pop

试题四(共 15 分)阅读以下说明和 C 函数,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 5 120 37 - * +” 。计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中,重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5 120 37 - * +”的计算过程为:a. 依次将 46、5、120、37 压入栈中;b. 遇到“-”,取出 37、120,计算 120–37,得 83,将其压入栈中;c. 遇到“*”,取出 83、5,计算 5*83,得 415,将其压入栈中;d. 遇到“+”,取出 415、46,计算 46+415,得 461,将其压入栈中;e. 表达式结束,则计算过程完成。函数 computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组 expr)的值,并通过参数 result 返回该值。函数的返回值为-1/0 分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。函数 computing 中所用栈的基本操作的函数原型说明如下:void InitStack(STACK *s):初始化栈。void Push(STACK *s, int e): 将一个整数压栈,栈中元素数目增 1。void Pop(STACK *s):栈顶元素出栈,栈中元素数目减 1。int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。int IsEmpty(STACK s):若s 是空栈,则返回1 否则返回 0。[C 函数]int computing(char expr[], int *result){STACK s; int tnum, a,b; char *ptr;InitStack(s);ptr = expr; /*字符指针指向后缀表达式串的第一个字符*/while (*ptr!='\0') {if (*ptr==' ') { /*当前字符是空格*/(1) ; /*字符指针指向下一字符*/continue;}elseif (isdigit(*ptr)) {/*当前字符是数字,则将该数字开始的数字串转换为数值*/tnum = (2) ;while (*ptr=’0’ *ptr =’9’) {tnum = tnum * 10 + (3) ;ptr++;}Push( (4) );}else /*当前字符是运算符或其他符号*/if (*ptr=='+'||*ptr=='-'||*ptr =='*'||*ptr =='/'){if (!IsEmpty(s)) {a = Top(s); Pop(s); /*取运算符的第二个运算数*/if (!IsEmpty(s)) {b = Top(s); Pop(s); /*取运算符的第一个运算数*/}else return -1;}else return -1;switch (*ptr) {case '+': Push(s,b+a); break;case '-': Push(s,b-a); break;case '*': Push(s,b*a); break;case '/': Push(s,b/a); break;}}elsereturn -1;ptr++; /*字符指针指向下一字符*/} /* while */if (IsEmpty(s)) return -1;else {(5) = Top(s); Pop(s); /*取运算结果*/if (!IsEmpty(s)) return -1;return 0;}}

经过下列栈的操作后,GetTop(ST)的值是()。InitStack(ST);push(ST,'a');push(ST,'b');pop(ST,x);A、AB、BC、1D、2

POP(PUSH(S,A))的运算步骤是首先将元素A压入栈中,若栈S满,出现上溢现象,否则将元素A压入栈顶,且元素个数加1,然后做POP(S)运算,将栈顶元素弹出,且元素个数减一。( ) 此题为判断题(对,错)。

在以下栈的基本运算中,不是加() AlnitStack(S)BPush(S,X)CPop(S)Dempty(S)

一个栈(Stack)对象有三种状态:S1——栈空;S2——栈非空也非满;S3——栈满。则各个状态的条件如下:S1:(t0)创建栈对象时初始化,这是系统做的(t1)在S2状态下执行置空运算setEmpty()(t2)在S3状态下执行置空运算setEmpty()(t3)在S2状态下执行出栈运算Pop()S2:(t4)在S1状态下执行进栈运算Push()(t5)在S3状态下执行出栈运算Pop()S3:(t6)在S2状态下执行进栈运算Push()为简化问题,假设栈Stack的容量为2,栈元素的数据类型为整数。根据题意,画出栈对象的状态迁移图;

堆栈s进行下列操作:push(1);push(2);pop();pop();后,此时的栈顶元素为( )。A.1B.2C.0D.不确定

阅读以下说明和C函数,将应填入 (n) 处的字句写在答题纸的对应栏内。4、【说明】 计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“46+5*(120-37)”的后缀表达式形式为“46 512037-*+”。 计算后缀表达式时,从左至右扫描后缀表达式:若遇到运算对象,则压入栈中;遇,到运算符,则从栈中弹出相关运算对象进行计算,并将运算结果压入栈中。重复以上过程,直到后缀表达式扫描结束。例如,后缀表达式“46 5120 37-*+”的计算过程如下。 a.依次将46、5、120、37压入栈中; b.遇到“-”,取出37、120,计算120-37=83,将其压入栈中: c.遇到“*”,取出83、5,计算5×83=415,将其压入栈中; d.遇到“+”,取出415、46,计算46+415=461,将其压入栈中; e.表达式结束,则计算过程完成。 函数computing(char expr[],int *result)的功能是基于栈计算后缀形式的表达式(以串形式存入字符数组expr)的值,并通过参数result返回该值。函数的返回值为-1/0,分别表示表达式有/无错误。假设表达式中仅包含数字、空格和算术运算符号,其中所有项均以空格分隔,且运算符仅包含加(“+”)、减(“-”)、乘(“*”)、除(“\”)。 函数computing中所用栈的基本操作的函数原型说明如下。 · void InitStack(STACK *s):初始化栈。 · void Push(STACK,s,int e):将一个整数压栈,栈中元素数目增1。 · void Pop(STACK *s):栈顶元素出栈,栈中元素数目减1。 · int Top(STACK s):返回非空栈的栈顶元素值,栈中元素数目不变。 · int IsEmpty(STACKs):若s是空栈,则返回1;否则返回0。【C函数】 int computing (char expr[],int *result) { STACK s; int tnum,a,b; char *ptr; InitStack(&s); ptr=expr;pstr /*字符指针指向后缀表达式串的第一个字符*/ while(*ptr!='\0') { if(*ptr==' ') { /*当前字符是空格*/ (1) ; /*字符指针指向下一字符*/ continue; } else if(isdigit (*ptr)) { /*当前字符是数字,则将该数字开始的数字串转换为数值*/ tnum= (2) ; while (*ptr>='0' && *ptr <='9') { tnum=tnum * 10 + (3) ; ptr++; } Push( (4) ); } else /*当前字符是运算符或其他符号*/ if (*ptr=='+'||*ptr=='-'||*ptr=='*'||*ptr=='/'){ if(!IsEmpty(s)) { a=Top(s);Pop(&s); /*取运算符的第二个运算数*/ if(!IsEmpty(s)) { b=Top(s);Pop(&s);/*取运算符的第一个运算数*/ } else return -1; } else return -1; switch (*ptr) { case '+': Push(&s,b+a); break; case '-':Push(&s,b-a); break; case '*':Push(&s,b*a); break; case '/':Push(&s,b/a); break; } } else return -1; ptr++; /*字符指针指向下一字符*/ }/*while*/ if(IsEmpty(s)) return -1; else{ (5) =Top(s); Pop(&s); /*取运算结果*/ if(!IsEmpty(s)) return -1; return 0; } }

设有一空栈,现有输入序列1,2,3,4,5,6,经过push,push,pop,push,pop,push,push后,输出序列是()。

设输入元素的顺序为1,2,3,4,5,要在栈S的输出端得到序列4.3.5.2.1,则进行的操作用栈的基本运算表示应为push(S,1),push(S,2),push(S,3),push(S,4),pop(S),(),pop(S),pop(S),pop(S)。

4个元素进S栈的顺序是A、B、C、D,进行两次Pop(S,x)操作后,栈顶元素的值是()。A、AB、BC、CD、D

设栈S的初始状态为空,现有五个元素组成的序列1,2,3,4,5,对该序列在栈S上依次进行PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH操作,出栈的元素序列是()。A、5,4,3,2,1B、2,1C、2,3D、3,4

设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5,经过push,push,pop,push,pop,push,push后,输出序列是(),栈顶指针为()。

设输入元素的顺序为1、2、3、4、5,要在栈S的输出端得到43521,则应进行栈的基本运算表示应为:push(S,1),push(S,2),push(S,3),push(S,4),pop(S),(),pop(S),pop(S),pop(S)。

设元素1,2,3,4,5依次进栈,若要在输出端得到序列34251。则应进行的操作序列为push(S,1); push(S,2);(); pop(S); push(S,4); pop(S);(); (); pop(S); pop(S)。

设有一空栈,现有输入序列1,2,3,4,5,经过push,push,pop,push,pop,push,push后,输出序列是()

经过下列栈的运算后EmptyStack(s)的值是() InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,x) ;A、aB、bC、1D、0

填空题设输入元素的顺序为1,2,3,4,5,要在栈S的输出端得到序列4.3.5.2.1,则进行的操作用栈的基本运算表示应为push(S,1),push(S,2),push(S,3),push(S,4),pop(S),(),pop(S),pop(S),pop(S)。

填空题设有一空栈,现有输入序列1,2,3,4,5,经过push,push,pop,push,pop,push,push后,输出序列是()

填空题设输入元素的顺序为1、2、3、4、5,要在栈S的输出端得到43521,则应进行栈的基本运算表示应为:push(S,1),push(S,2),push(S,3),push(S,4),pop(S),(),pop(S),pop(S),pop(S)。

填空题设有一个空栈,栈顶指针为1000H,现有输入序列为1、2、3、4、5,经过push,push,pop,push,pop,push,push后,输出序列是(),栈顶指针为()。

填空题设元素1,2,3,4,5依次进栈,若要在输出端得到序列34251。则应进行的操作序列为push(S,1); push(S,2);(); pop(S); push(S,4); pop(S);(); (); pop(S); pop(S)。

单选题输入序列为ABC,可以变为CBA时,经过的栈操作为( )。Apush,pop,push,pop,push,popBpush,push,push,pop,pop,popCpush,push,pop,pop,push,popDpush,pop,push,push,pop,pop

单选题经过下列栈的运算后EmptyStack(s)的值是() InitStack(s);Push(s,a);Push(s,b);Pop(s,x);Pop(s,x) ;AaBbC1D0