字尾表示式的運算求值

2021-08-10 09:59:36 字數 890 閱讀 1629

/*

1.首先先將中綴表示式轉換為字尾表示式

2.然後我們要分情況;

如果為數字字串就直接入棧;

如果是左括號入棧就直接入棧

如果是右括號則將棧中左括號之前的所有字元出棧;

如果是數字字串則需要考慮運算子的優先順序

最後將棧最後乙個賦為0,字串結束

*//************************************/

#include#include#define newp (stype *)malloc(sizeof(stype))  //定義乙個申請棧位址的巨集

typedef struct _stack stype; //建立棧型別

int tance(char x) //探測優先順序

int main()

else if (c=='(') //如果是左括號,直接進棧

else if (c==')') //如果是右括號,匹配左括號,把兩者之間的棧內符號全部彈出

s=top;

top=top->next;

free(s);

} else //否則肯定是+-*/了

else //否則就把棧頂的符號一直彈出,直到彈到可以壓進去,然後壓進去(也就是說等於也不能壓進去)

s=newp;

s->dat=c;

s->next=top;

top=s;

}} c=getchar(); //讀取下乙個字元

} while (top->dat!='@') //讀完和還不算完,還要把棧內剩餘的所有符號挨個彈出

return 0; //字尾表示式輸出完畢

}

中綴表示式轉字尾表示式並計算求值C C

1.遇到運算元,直接輸出 2.棧為空時,遇到運算子,入棧 3.遇到左括號,將其入棧 4.遇到右括號,執行出棧操作,並將出棧的元素輸出,直到彈出棧的是左括號,左括號不輸出 5.遇到其他運算子 時,彈出所有優先順序大於或等於該運算子的棧頂元素,然後將該運算子入棧 6.最終將棧中的元素依次出棧,輸出。經過...

字尾表示式求值

字尾表示式求值過程中不需要考慮運算子的優先順序,只需要對該表示式中的每乙個元素進行判斷,若為運算元則將其儲存在乙個陣列裡 入棧 若為運算子則取出前面的兩個運算元 彈棧 並運算,並將運算結果放回該陣列 入棧 最終陣列的最後乙個元素 棧頂元素 即為該表示式的運算結果.如 字尾表示式 23 等價於中綴表示...

字尾表示式求值

題目描述 為了便於處理表示式,常常將普通表示式 稱為中綴表示 轉換為字尾sqstack 順序棧的初始化 status initstack sqstack s 順序棧的入棧 status push sqstack s,selemtype e 演算法3.3 順序棧的出棧 status pop sqsta...