字尾表示式演算法例子

2021-07-03 05:10:17 字數 1994 閱讀 9923

1

2 3 #include

4 using namespace std;

5 6 template class mystack

7 ;20

21 22 templatevoid mystack::init()

23 26

27 templatebool mystack::empty()

28 31

32 templatet mystack::gettop()

33 39     return this->data[this->top-1];

40 }

41 42 templatevoid mystack::push(t x)

43 49     this->data[this->top] =x;

50     this->top ++;

51 }

52 53 templatet mystack::pop()

54 60

61     t e =this->data[this->top-1];

62     this->top --;

63     return e;

64 }

// prefixtopostfix.h

#include

using namespace std;

bool isoperator(char op);                          // 判斷是否為運算子

int priority(char op);                                // 求運算子優先順序

void postfix(char pre , char post,int &n);    // 把中綴表示式轉換為字尾表示式

double read_number(char str,int *i);              // 將數字字串轉變成相應的數字

double postfix_value(char post);                  // 由字尾表示式字串計算相應的中值表示式的值  

// prefixtopostfix.cpp

#include "mystack.h"

#include "prefixtopostfix.h"

#include

using namespace std;

void main()

bool isoperator(char op)

}int priority(char op)

}//     把中綴表示式轉換為字尾表示式,返回字尾表示式的長度(包括空格)

void postfix(char pre ,char post,int &n)

else if (pre[i]=='(')    // 遇到「(」不用比較直接入棧

stack.push(pre[i]);

else if(pre[i] ==')')  // 遇到右括號將其對應左括號後的操作符(操作符棧中的)全部寫入字尾表示式

stack.pop(); // 將「(」出棧,字尾表示式中不含小括號

}else if (isoperator(pre[i]))

stack.push(pre[i]);    // 當前操作符優先順序大於棧頂操作符的優先順序,將該操作符入棧

}i++;

}while(stack.top) // 將所有的操作符加入字尾表示式

}double read_number(char str,int *i)

if(str[*i]=='.') // 處理小數部分

}while(k!=0)

return x;

}double postfix_value(char post)

else if (post[i] =='-')

else if (post[i] =='*')

else if (post[i] =='/')

}return stack.gettop();

}

c Lamda表示式 簡化語法例子

看到乙個老 裡的方法,是判斷兩個string 陣列是否存在相同的元素 快一百行 了。public bool hasrole string rolelist if result return result 用lamda表示式 簡化語法例子,3行就行了 string rolelis new string...

正規表示式基礎語法例子

功能 匹配文字字串的字面值 literal 例子 foo 功能 匹配正規表示式 re1 或者 re2 例子 foo bar 功能 匹配任何字元 除了 n 之外 例子 表示式 f.o 匹配 在字母 f 和 o 之間的任意乙個字元 例如 fao f9o f o 等 表示式 匹配 任意兩個字元功能 匹配字...

字尾表示式 中綴到字尾表示式

輸入空格跳出迴圈 while k getchar n 字尾表示式 此 僅限於0 9內的加減乘除 include include include define long 10 using namespace std typedef struct stack qstack void init qstac...