資料結構 表示式的計算與轉換 C

2021-08-01 15:58:12 字數 2432 閱讀 3837

學習完棧可以進行表示式的計算與轉換

中綴轉字首

中轉轉字尾

根據中綴計算

根據字尾計算

根據字首計算

等將來複習到樹之後,有時間把字首字尾相互轉換,以及字首字尾轉中綴實現

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...