資料結構學習實錄四 字尾表示式的計算(C )

2021-08-02 09:22:32 字數 1256 閱讀 7522

在上一節我們講了中綴表示式如何轉字尾表示式,並且給出了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 而不是...