在上一節我們講了中綴表示式如何轉字尾表示式,並且給出了c++**實現,當然我承認,上次寫**的時候有點昏昏沉沉的,所以寫的並不好,邏輯不是很清晰,不過還好沒錯啦,這次我們來討論字尾表示式計算的實現。
額 我想想,程式設計的具體計算步驟我們還是要討論的。使用棧進行解決。
約法三章:
1.遇到數字不操作,直接壓棧。『
2.遇到運算子,則彈出運算子前兩個數字,進行該運算,將計算結果壓棧。
3.從頭向後掃瞄,直到只剩乙個數字為止,則其為最後答案。
其實也不是很難對吧,程式設計實現應該是小意思。
測試資料:5*7+8-9*(2-6)+6/3;
正確答案為:81
有圖有真相,不信你去算
**實現
// 中綴表示式轉字尾表示式.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include"iostream"
using namespace std;
typedef struct sqstack
sqstack;
typedef struct iinum
iinum;
//用於確定符號的優先順序 i=true代表內優先,否則為外優先,返回值為-1時,代表是數字。
int mynum(char a, bool i)
//對棧進行操作的函式
void transform(char* oldl, char* inew)
old[ii+1] = '#';
old[ii + 2] = '\0';
//加#結束
for (int i = 0; i < 30; i++)
//棧區清空
a.date[a.top] = '#';
//首#入棧
//對表示式進行轉換
for (int i = 1; old[i] != '\0'; i++)
else if (num == inum)
else
}else
}inew[n] = '\0'; }
//計算模組
int compute(char* a)
else if (a[i] == '-')
else if (a[i] == '*')
else if (a[i] == '/')
else
}return c.date[c.top];
}int main()
資料結構學習 中綴表示式轉字尾表示式
本題所描繪的中綴轉字尾,只是很簡單的轉。並不能達到寫計算器的目的,本文在此只用於個人的基礎鞏固,以及淺層次的思考,幫助進行中綴表示式轉字尾表示式的理解。中綴表示式如1 2 2 1 其運算子一般出現在運算元之間,因此稱為中綴表示式,也就是大家程式設計中寫的表示式。編譯系統不考慮表示式的優先級別,只是對...
資料結構學習 中綴表示式轉字尾表示式
表示式的三種形式 字尾表示式 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 字首表示式 同字尾表示式一樣,不包含括號,運算子放在兩個運算物件的前面,如 2 1 3,注意 2 1 對應的 中綴表示式是 2 1 而不是...
資料結構學習 中綴表示式轉字尾表示式(c )
表示式的三種形式 字尾表示式 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 字首表示式 同字尾表示式一樣,不包含括號,運算子放在兩個運算物件的前面,如 2 1 3,注意 2 1 對應的 中綴表示式是 2 1 而不是...