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

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

此题为判断题(对,错)。


相似考题

4.试题四(共 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;}}

更多“POP(PUSH(S,A))的运算步骤是首先将元素A压入栈中,若栈S满,出现上溢现象,否则将元素A压入栈顶,且元素个数加1,然后做POP(S)运算,将栈顶元素弹出,且元素个数减一。( ) ”相关问题
  • 第1题:

    下面是一个栈类的模板,其中push函数将元素i压入栈顶,pop函数弹出栈顶元素。栈初始为空,top值为0,栈顶元素在stack[top-1]中,在下面横线处填上适当的语句,完成栈类模板的定义。

    template<class t>

    class Tstack

    {

    enum{size=1000};

    T stack[size]

    int top;

    public:

    Tsack():top(0){}

    void push(const T&i){

    if(top<size)

    stack[top++]=i;

    }

    T pop()

    {

    if(top==O)exit(1);//栈空时终止运行

    retum【 】;

    }

    };


    正确答案:stack[--top]
    stack[--top] 解析:++/--运算符;注意栈顶元素在stack[top-1]中。

  • 第2题:

    若push、pop分别表示入栈、出栈操作,初始栈为空且元素1、2、3依次进栈,则经过操作序列push、push、pop、pop、push、pop之后,得到的出栈序列为 ( )

    A.321
    B.213
    C.231
    D.123

    答案:B
    解析:
    栈的运算特点为在同一端插入和删除元素,即先入后出,总是栈顶元素先出栈,新元素总是压在栈顶元素之上并成为栈顶元素。初始栈为空,如下图(a)所示。对于元素 1、2、3,依照操作序列push、push、pop、pop、push、pop,可以得到出栈序列213,其过程为:第一个push操作将元素1压入栈中,如下图(b)所示:第二个push操作将元素2压入栈中,如下图(c)所示:第一个pop将栈顶元素2弹出栈,新栈顶元素为1,如下图(d)所示;第二个pop将栈顶元素1弹出栈,导致栈空,如下图(e)所示:其后的push和pop分别将元素3压入和弹出栈,操作结果如下图(f)和(g)所示。

  • 第3题:

    2、在算术表达式求值的算法中,若当前正扫描的符号是运算符s,且s的优先级比运算符栈栈顶元素的优先级高,则()

    A.运算符栈出栈,运算数出栈,做运算;

    B.s 进运算符栈;

    C.取运算符栈栈顶,运算数栈顶,做运算;

    D.s 进运算数栈;


    s 进运算符栈;

  • 第4题:

    若push、pop分别表示入栈、出栈操作,初始栈为空且元素3、2、1依次进栈,则经过操作序列push、push、pop、pop、push、pop之后,得到的出栈序列为__(3)__。

    A.321

    B.213

    C.231

    D.123


    正确答案:C
    经过前两个操作push、push之后,栈里有元素3、2且2在栈顶。接着再进行pop、pop之后,依次把2、3出栈了,栈空了。再接着push、pop,元素1进栈又出栈。因此,最终得到的出栈顺序是231。

  • 第5题:

    1、在算术表达式求值的算法中,若当前正扫描的符号是运算符s,且s的优先级比运算符栈栈顶元素的优先级高,则()。

    A.运算符栈出栈,运算数出栈,做运算;

    B.s 进运算符栈;

    C.取运算符栈栈顶,运算数栈顶,做运算;

    D.s 进运算数栈;


    s 进运算符栈;