xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 4KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-08
  • 語言: C/C++
  • 標簽: 中綴??后綴??

資源簡介

用dev c++寫的代碼,附有啰里啰嗦的注釋和測試樣例。太簡單了不好意思要分。

資源截圖

代碼片段和文件信息

#include?							//中綴表達式轉后綴表達式?
#include? //通過使用棧暫存運算符,實現運算符位置的調整?
#include? //tips:?中綴表達式即常見的表達式,可以用二叉樹表示。對該二叉?
#include? //樹進行后序遍歷可以得到后綴表達式(逆波蘭表達式)。?
#include?
using?namespace?std;

bool?isOperand(char?c); //判斷是否為操作數(變量)?
bool?isOperator(char?c); //判斷是否為操作符(運算符)?
bool?isHigherOperator(char?achar?b); //判斷操作符a的優先級是否高于b?
string?generalToRvsPolish(string?expression);//將中綴表達式轉為后綴表達式?

int?main()
{
while(true)
{
string?expression; //變量由單個字母表示,運算符僅限+-*/()
getline(cinexpression); //中間空格不影響結果?

string?rvsPolishNotation=generalToRvsPolish(expression);
cout< }
return?0;
}

bool?isOperand(char?c)
{
if((c>=‘a‘&&c<=‘z‘)||(c>=‘A‘&&c<=‘Z‘))
return?true;
else
return?false;
}

bool?isOperator(char?c)
{
if(c==‘+‘||c==‘-‘||c==‘*‘||c==‘/‘||c==‘(‘||c==‘)‘)
return?true;
else
return?false;
}

bool?isHigherOperator(char?achar?b) //a大于b為true,a小于等于b為false?
{
if(a==‘(‘||b==‘(‘) //左括號無優先級,可視為既與+-的優先級相同,又與*/的優先級相同?
return?true;
else?if(b==‘*‘||b==‘/‘)
return?false;
else?if(a==‘*‘||a==‘/‘)
return?true;
else
return?false;
}

string?generalToRvsPolish(string?expression)
{
int?len=expression.length();
char*?rvsPoCharArray=new?char[len]; //暫存后綴表達式的char數組?
int?j=0; //rvsPoCharArray當前處理的位置下標?
stack?operatorStack; //暫存操作符的棧,棧中始終保持上面的操作符的優先級高于下面的操作符,這是實現調整的關鍵?
for(int?i=0;i {
//cout<<“cur:?“<pression[i]< if(isOperand(expression[i])==true) //若為操作數直接輸出到rvsPoCharArray?
{
rvsPoCharArray[j]=expression[i];
j++;
}

if(isOperator(expression[i])==true) //字符為操作符,進行必要的調整?
{
if(operatorStack.empty()==true) //棧為空的情況:操作符直接入棧(若

評論

共有 條評論