大整数算术求值 c语言 栈,用C语言实现 多位整数的四则运算,用栈,例如56*(12+20)-102/2...
該樓層疑似違規(guī)已被系統(tǒng)折疊?隱藏此樓查看此樓
gets(szExpression);
// 中綴表達式轉后綴表達式,結果保存在expression中
for (int i = 0; i < strlen(szExpression); i++)
{
if (isspace(szExpression[i])) // 空白字符
{
if (bFindBegin)
{
expression[num].type = 1;
expression[num].element.int_element = atoi(pbegin);
num++;
bFindBegin = false;
}
continue;
}
if (isdigit(szExpression[i])) // 數(shù)字字符
{
if (!bFindBegin)
{
pbegin = &szExpression[i];
bFindBegin = true;
}
continue;
}
c = szExpression[i];
if (c == '+' || c == '-' || c == '*' || c == '/' || c == '(' || c == ')') // 操作符字符
{
if (bFindBegin)
{
expression[num].type = 1;
expression[num].element.int_element = atoi(pbegin);
num++;
bFindBegin = false;
}
if (c != ')')
{
if (!isEmpty(pSymboolStack)) // 存在操作符
{
if (c == '(') // 直接入棧
push(pSymboolStack, c);
else {
do
{
char topElement = top(pSymboolStack);
if (compare(topElement, c) >= 0 && topElement != '(') // 優(yōu)先級不低于c且棧頂不等于'(',則出棧
{
expression[num].type = 2;
expression[num].element.char_element = topElement;
num++;
pop(pSymboolStack);
}
else
break;
} while (!isEmpty(pSymboolStack));
// c入棧
push(pSymboolStack, c);
}
} // 不存在操作符,直接入棧
else
push(pSymboolStack, c);
}
else // c == ')'
{
while( (c =top(pSymboolStack)) != '(')
{
expression[num].type = 2;
expression[num].element.char_element = c;
num++;
總結
以上是生活随笔為你收集整理的大整数算术求值 c语言 栈,用C语言实现 多位整数的四则运算,用栈,例如56*(12+20)-102/2...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java char i=2+#039;2
- 下一篇: 蟑螂可以用开水烫死吗?