學習完棧可以進行表示式的計算與轉換
中綴轉字首
中轉轉字尾
根據中綴計算
根據字尾計算
根據字首計算
等將來複習到樹之後,有時間把字首字尾相互轉換,以及字首字尾轉中綴實現
expressioncalcuate.h:
#pragma once
#include#include#include using namespace std;
class expressioncalcuate ;
expressioncalcuate.cpp:
#include"expressioncalcuate.h"
void expressioncalcuate::setprefix(string prefix)
void expressioncalcuate::setsuffix(string suffix)
void expressioncalcuate::setinfix(string infix)
string expressioncalcuate::getprefix()
string expressioncalcuate::getsuffix()
string expressioncalcuate::getinfix()
bool expressioncalcuate::infixtoprefix()
else if (c == '+' || c == '-')
else
}} else if (c == '*' || c == '/')
else
}} else if (c == ')')
else if (c == '(')
signstack.pop();
} } while (!signstack.empty())
while (!res.empty())
this->prefix = result;
return true;
}bool expressioncalcuate::infixtosuffix()
else if (c == '+'||c=='-')
else
}} else if (c == '*'||c == '/')
else
}} else if (c == '(')
else if (c == ')')
signstack.pop();
} }while (!signstack.empty())
this->suffix = result;
return true;
}int expressioncalcuate::calcuateprefix()
else
else if (c == '-')
else if (c == '*')
else if (c == '/')
} }return numstack.top();
}int expressioncalcuate::calcuatesuffix()
else
else if (c == '-')
else if (c == '*')
else if (c == '/')
} }return numstack.top();
}int expressioncalcuate::calcuateinfix()
else if (c == '+')
else
}} else if (c == '-')
else
}} else if (c == '*')
else
}} else if (c == '/')
else
}} else if (c == '(')
else if (c == ')')
signstack.pop();
} }while (!signstack.empty())
return numstack.top();
}bool expressioncalcuate::calcuateonce(stack&numstack, stack&signstack)
else if (c == '-')
else if (c == '*')
else if (c == '/')
return true;
}
main.cpp(測試):
#include#include"expressioncalcuate.h"
using namespace std;
void main()
資料結構 表示式計算
表示式求值時資料結構的基礎演算法之一,其主要思想就是堆疊的使用。下面將詳細的介紹演算法的各個部分 表示式求值演算法主要流程如下 首先要說明的是字尾表示式,字尾表示式即 不包含括號,運算子放在兩個運算物件的後面,所有的計算按運算子出現的順序,嚴格從左向右進行 不再考慮運算子的優先規則,如 2 1 3 ...
資料結構中用C 實現「表示式計算」
用c 重新回溫一下,加深一點印象.目前還不支援單目操作符,只支援雙目的,以後改進吧.清理所有正在使用的資源。protected override void dispose bool disposing base.dispose disposing region windows 窗體設計器生成的 設計...
資料結構中用C 實現「表示式計算」
最近重新翻起以前學的資料結構,原來是用c寫的,今天用c 重新回溫一下,加深一點印象.目前還不支援單目操作符,只支援雙目的,以後改進吧.using system using system.drawing using system.collections using system.componentmo...