Skip to content

Commit ac6ee5e

Browse files
committed
test
1 parent 1cf4d9d commit ac6ee5e

File tree

2 files changed

+40
-10
lines changed

2 files changed

+40
-10
lines changed

utility.cpp

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,45 @@
1414
* 5)当中序表达式的符号序列全部读入后,若栈内仍有元素,把它们依次弹出并放到后序表达式序列尾部。
1515
* 若弹出的元素遇到空括号,则说明不匹配,发生错误,并进行相关处理
1616
**/
17-
void inToPost(QString &infixexp , vector<QString> &postfixexp)
17+
bool inToPost(QString &infixexp , vector<QString> &postfixexp)
1818
{
1919
if(infixexp.isNull()) return ;
2020
QString *number = new QString();
21-
for (int var = 0; var < infixexp.size(); ++var) {
22-
switch infixexp.at(var)
23-
{
24-
case '(':
25-
break;
26-
case ')':
27-
break;
28-
case
21+
QStack<char> stack;
22+
for(int var = 0; var < infixexp.size(); ++var)
23+
{
24+
if(infixexp.at(var)>='0' && infixexp.at(var)<='9'){
25+
number->append(infixexp.at(var));
26+
}else if('(' == infixexp.at(var)) {
27+
stack.push_back(infixexp.at(var));
28+
}else if (')' == infixexp.at(var)) {
29+
if(stack.isEmpty()) return false;
30+
char oper;
31+
while(!stack.isEmpty()){
32+
oper = stack.pop();
33+
if(oper != '(')
34+
postfixexp.push_back(oper);
35+
}
36+
}else if (isoperator(infixexp.at(var))){
37+
if(!number->isEmpty()){
38+
postfixexp.push(*number);
39+
number->clear();
40+
}
41+
//operator handle
42+
43+
}else{
44+
//Invalid input
45+
return false;
2946
}
3047
}
48+
return true;
3149
}
50+
51+
52+
bool handleOperator(char oper, QStack<char> & stack , vector<Qstring> & postfixexp)
53+
{
54+
while(!stack.isEmpty())
55+
{
56+
57+
}
58+
}

utility.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#ifndef UTILITY
22
#define UTILITY
33
#include <QString>
4+
#include <QStack>
45

56

67
const int DEFAULT_MODE = 1;
@@ -12,7 +13,9 @@ const int DELETE_MODE = 5;
1213
* @param infixexp
1314
* @return
1415
*/
15-
void inToPost(QString &infixexp, vector<QString> &postfixexp);
16+
bool inToPost(QString &infixexp, vector<QString> &postfixexp);
17+
18+
bool handleOperator(char oper, QStack<char> & stack , vector<Qstring> & postfixexp);
1619

1720

1821
#endif // UTILITY

0 commit comments

Comments
 (0)