資料結構中綴轉字尾表示式並計算(多位,負數,小數)

2021-09-12 22:35:06 字數 1632 閱讀 4211

課上資料結構作業,可以處理多位數輸入,負數輸入,小數輸入,必須合法輸入,無任何健壯性。。。

#include #include #include using namespace std;

templateclass stack ;

templateclass arraystack : public stack

arraystack()

void clear()

bool push(const t item)

else

}bool pop(t &item)

else

}void pop()

bool showtop(t &item)

else

}bool isempty()

};templatet stringtonum(const string &str)

//優先順序編碼

int priority(char c)

}}bool isoperator(char c) ;

int i;

for (i = 0; i < 5; ++i)

return false;

}bool isnumber(char c)

return false;

}void addspace(string &str)

//新增0,解決負數錯誤問題

void format(string &str)

//中綴轉字尾

int convert(string infixexp, string &postfixexp)

break;

case 4: //左括號直接入棧

s->push('(');

break;

case 3: //右括號,判空,依次彈出直到左括號

if (s->isempty())

else

}s->pop();

break;

case 2: //當輸入運算子

case 1:

char top;

s->showtop(top);

while (!s->isempty() && top != '(' && (priority(top) >= priority(infixexp[i])))

s->push(infixexp[i]);

break;}}

//輸出剩餘棧中的元素

while (!s->isempty())

return 0;

}void calculate(string postfixexp)

//如果是空格,則數字結束(多位處理)

else if (postfixexp[i] == ' ' && !temp.empty() && !isoperator(postfixexp[i]))

//如果是運算子

else if (isoperator(postfixexp[i]))

s->push(result);

}i++;

}s->showtop(top);

cout << "運算結果為: " << top << endl;

}int main()

資料結構 中綴表示式轉字尾表示式

話不多說上例子 1 2 3 4 5 1 2 3 4 5 中綴表示式轉字尾表示式思路分析 1.首先需要兩個棧運算子棧 s1和儲存中間結果的棧 s2 2.從左至右掃瞄中綴表示式 2.1當前為運算元,將其壓棧至s2 2.2當前為運算子 2.2.1如果s1為空或者棧頂運算子為左括號 則將此運算子直接入s1棧...

中綴表示式轉字尾表示式並計算字尾表示式的值

中綴表示式轉字尾表示式思路 首先給用到的每個操作符如 等按照他們原本的計算優先順序定義兩個代表優先順序的數值,如instackpri代表入棧之後的優先順序,outstackpri代表入棧之前的優先順序.然後掃瞄表示式,如果是數字,直接輸出,如果是 則將棧頂操作符依次出棧,直到遇到 如果是其他操作符,...

c 中綴表示式轉字尾表示式並計算

include include using namespace std 棧內優先順序 int isp char a 棧外優先順序 int icp char a 計算函式 int cal int a,int b,char c char in order expression 1000 中綴表示式 ch...