逆波蘭表示式的c 實現

2021-06-25 22:45:30 字數 2079 閱讀 4621

逆波蘭表示式的c++實現

一、問題描述;

1、逆波蘭表示式簡介;

逆波蘭表示式是一種十分有用的表示式,它將複雜表示式轉換為可以依靠簡單的操作得到計算結果的表示式。例如(a+b)*(c+d)轉換為ab+cd+*

它的優勢在於只用兩種簡單操作,入棧和出棧就可以搞定任何普通表示式的運算。其運算方式如下:

如果當前字元為變數或者為數字,則壓棧,如果是運算子,則將棧頂兩個元素彈出作相應運算,結果再入棧,最後當表示式掃瞄完後,棧裡的就是結果。

2、逆波蘭表示式的示例;

a+b ---> a,b,+

a+(b-c) ---> a,b,c,-,+

a+(b-c)*d ---> a,b,c,-,d,*,+

a+d*(b-c)--->a,d,b,c,-,*,+

a=1+3 ---> a=1,3 +

二、**:

//逆波蘭表示式

#include using namespace std;

const int length = 1000; //棧的最大長度

typedef struct stack

stack;

stack * creatstack(); //建立

void push(stack * s, char x); //壓棧操作

char pop(stack * s); //出棧操作

void operate(char * str); //轉換函式

bool isempty(stack * s); //判斷棧是否為空

bool isfull(stack * s); //判斷棧是否為滿

int main()

stack * creatstack() //建立並初始化(top = -1)

head->a = (char *)malloc(sizeof(char) * length);

if (!head->a)

head->top = -1;

return head;

}void push(stack * s, char x) //壓棧操作

else exit(0);

} char pop(stack * s) //出棧操作

else exit(0);

}void operate(char * str) //轉換函式

pop(s1);

break;

case'+':

case'-':

if (s1->a[s1->top] == '(' || s1->a[s1->top] == '#')

else

break;

case'*':

case'/':

if (s1->a[s1->top] == '*' || s1->a[s1->top] == '/')

else

break;

default: //數字直接入棧

push(s2, str[i]);

break;

} }while (s1->top)

for (i = 0; i <= s2->top; i++)

cout << endl;}}

bool isempty(stack * s) //判斷棧是否為空

return flag;

}bool isfull(stack * s) //判斷棧是否為滿

return flag;

}

三、總結;

由於最近剛接觸到棧,只是知道它的一些特點,但到真正使用時卻覺得特別的生澀。於是,我便開始查閱資料認真的學習資料上的思想,但是,當我真正寫出這段**之後,覺得其實真的挺簡單的。話不多說,上面的**是可以執行的,但我希望讀者能更加注重注釋,而不是僅對**的複製貼上。

波蘭表示式 逆波蘭表示式

中綴表示式是最常見的運算表示式,如 3 5 2 6 1 波蘭表示式又稱為字首表示式,它是由中綴表示式經過一定的方式轉換來的 比如中綴表示式為 3 5x 2 6 1 對應的字首表示式為 3 x 5 2 6 1 對於中綴表示式從右向左遍歷轉換為字首表示式,中途要是用棧進行儲存 轉換規則如下 波蘭表示式 ...

波蘭逆波蘭表示式

實現乙個基本的計算器來計算簡單的表示式字串。表示式字串只包含非負整數,算符 左括號 和右括號 整數除法需要 向下截斷 你可以假定給定的表示式總是有效的。所有的中間結果的範圍為 231,231 1 class solution s2.push s.substr l,r l l r 碰見符號 else ...

波蘭表示式與逆波蘭表示式

2018年09月03日 11 29 15 jitwxs 閱讀數 70 標籤 波蘭 字首 更多 個人分類 演算法與資料結構 常見的算術表示式,稱為中綴表示式,例如 5 6 4 2 3波蘭表示式也稱為字首表示式,以上面的例子為例,其波蘭表示式為 5 6 4 2 3中綴表示式轉換字首表示式的操作過程為 1...