已知栈的基本操作函数:intInitStack(SqStack*S);//构造空栈intStackEmpty(SqStack*S);//判断栈空intPush(SqStack*S,ElemTypee);//入栈intPop(SqStack*S,ElemType*e);//出栈函数conversion实现十进制数转换为八进制数,请将函数补充完整。voidconversion(){InitStack(S);scanf(“%d”,&N);while(N){(1);N=N/8;}while((2)){Pop(S,&e);printf(“%d”,e);}}//conversion
第1题:
阅读以下说明和C函数,将(1)~(5)空缺处的字句填写完整。
[说明]
计算机在处理算术表达式时,首先将其转换为后缀表达式。例如,表达式“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(STACKs):若s是空栈,则返回1;否则返回0。
[C函数]

(2)取得数字字符“7” (ASCII码值为55)。
(3)取得数字字符“5” (ASCII码值为53)。
以下程序代码用于将一个数字字符串转换为对应的整数存入tnum显然tnum的初始值应为0。
因此(2)空缺处应填入“0”。对于(3)空缺所在表达式的功能是:将数字字符转换为数值因此 (3)空缺处填入“*ptr-48”。
(4)空缺处用于将转换所得的数值tnum压入栈顶根据题目中Push的原型“void Push(STACK*sint e)”调用时第一个实际参数是STACK类型变量的地址第二个实际参数是一个整数因此(4)空缺处填入“&stnum”。
由于函数computing(char expr[]int*result)通过参数result返回该表达式的值因此需要将存在栈顶的运算结果赋值给result指向的整型变量即(5)空缺处填入“*result”。
本试题目还考查了参数传递知识读者可通过上机实践加强基本概念的理解以及C程序设计能力的培养。
(2)取得数字字符“7” (ASCII码值为55)。
(3)取得数字字符“5” (ASCII码值为53)。
以下程序代码用于将一个数字字符串转换为对应的整数存入tnum,显然,tnum的初始值应为0。
因此,(2)空缺处应填入“0”。对于(3)空缺所在表达式的功能是:将数字字符转换为数值,因此 (3)空缺处填入“*ptr-48”。
(4)空缺处用于将转换所得的数值tnum压入栈顶,根据题目中Push的原型“void Push(STACK*s,int e)”,调用时第一个实际参数是STACK类型变量的地址,第二个实际参数是一个整数,因此,(4)空缺处填入“&s,tnum”。
由于函数computing(char expr[],int*result)通过参数result返回该表达式的值,因此需要将存在栈顶的运算结果赋值给result指向的整型变量,即(5)空缺处填入“*result”。
本试题目还考查了参数传递知识,读者可通过上机实践加强基本概念的理解,以及C程序设计能力的培养。
第2题:
a、b、c、d、e、f依次进栈、进栈、出栈、进栈、进栈、出栈、进栈的操作,则操作完后,栈S的栈顶元素为()。
A.a
B.b
C.d
第3题:
第4题:
以下函数为链栈的进栈操作,x是要进栈的结点的数据域,top为钱顶指针,补充程序。 

略
第5题:
“删除栈顶元素”、“删除栈底元素”、“判断堆栈是否为空”和“将堆栈置为空栈”这4种操作中,()不是堆栈的基本操作。
第6题:
函数可能需要栈帧的原因不包括下面哪项?()
第7题:
已知一个顺序栈*s,栈顶指针是top,它的容量为MAXSIZE,则判断栈空的条件为(),栈满的条件是()
第8题:
数据结构里,pop操作应该栈的的哪个部位操作()。
第9题:
在8086中,堆栈操作是字操作还是字节操作?已知SS=1050,HSP=0006,HAX=1234,H若对AX执行压栈操作(即执行PUSHA)X;试问AX的内容存放在何处?
第10题:
栈的插入操作叫做进栈
栈的插入操作叫做压栈
栈的插入操作叫做入栈
栈的插入操作叫做弹栈
第11题:
栈的删除操作叫做出栈
栈的删除操作叫做弹栈
栈的删除操作叫做压栈
栈的删除操作叫做进栈
第12题:
第13题:
a、b、c、d、e、f依次进栈、进栈、出栈、进栈、进栈、出栈的操作,则操作完后,栈S的栈顶元素为()。
A.a
B.b
C.c
第14题:
已知栈S 初始为空,用 I 表示入栈、O表示出栈,若入栈序列为a1a2a3a4a5,则通过栈 S 得到出栈序列a2a4a5a3a1的合法操作序列( )。
A.IIOIIOIOOOB.IOIOIOIOIOC.IOOIIOIOIOD.IIOOIOIOOO
第15题:
第16题:
以下函数为链栈的进栈操作,x是要进栈的结点的数据域,top为栈顶指针。 
sizeof(structnode)
P->next=top
top=p
略
第17题:
已知栈的基本操作函数:intInitStack(SqStack*S);//构造空栈intStackEmpty(SqStack*S);//判断栈空intPush(SqStack*S,ElemTypee);//入栈intPop(SqStack*S,ElemType*e);//出栈函数conversion实现十进制数转换为八进制数,请将函数补充完整。voidconversion(){InitStack(S);scanf(“%d”,&N);while(N){(1);N=N/8;}while((2)){Pop(S,&e);printf(“%d”,e);}}//conversion
第18题:
假定利用数组A[N]顺序存储一个栈,top表示栈顶指针,已知栈未满,则x入栈时所执行的操作是()。
第19题:
下列选项中关于栈的插入操作说法正确的是()。
第20题:
数据结构里,push操作应该栈的哪个部位操作()。
第21题:
第22题:
有些局部变量是数组或者结构
局部变量太少,能都放在寄存器中
函数用取地址操作符(&)来计算一个局部变量的地址
函数必须将栈上的某些参数传递到另一个函数
第23题:
第24题:
a[--top]=x
a[top--]=x
a[++top]=x
a[top++]=x