閱讀以下說明和C函數(shù),將應(yīng)填入 (n) 處的字句寫在答題紙的對應(yīng)欄內(nèi)。
【說明】
計算機在處理算術(shù)表達式時,首先將其轉(zhuǎn)換為后綴表達式。例如,表達式“46+5*(120-37)”的后綴表達式形式為“46 5 120 37 - * +”。
計算后綴表達式時,從左至右掃描后綴表達式:若遇到運算對象,則壓入棧中;遇到運算符,則從棧中彈出相關(guān)運算對象進行計算,并將運算結(jié)果壓入棧中,重復(fù)以上過程,直到后綴表達式掃描結(jié)束。例如,后綴表達式“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. 表達式結(jié)束,則計算過程完成。
函數(shù)computing(char expr[],int *result)的功能是基于棧計算后綴形式的表達式(以串形式存入字符數(shù)組expr)的值,并通過參數(shù)result 返回該值。函數(shù)的返回值為-1/0分別表示表達式有/無錯誤。假設(shè)表達式中僅包含數(shù)字、空格和算術(shù)運算符號,其中所有項均以空格分隔,且運算符僅包含加(“+”)、減(“-”)、乘(“*”)、除(“\”)。
函數(shù)computing中所用棧的基本操作的函數(shù)原型說明如下:
void InitStack(STACK *s):初始化棧。
void Push(STACK *s, int e): 將一個整數(shù)壓棧,棧中元素數(shù)目增1。
void Pop(STACK *s):棧頂元素出棧,棧中元素數(shù)目減1。
int Top(STACK s):返回非空棧的棧頂元素值,棧中元素數(shù)目不變。
int IsEmpty(STACK s):若s是空棧,則返回1否則返回0。
【C函數(shù)】