使用棧計算中綴表示式

2021-08-02 21:42:34 字數 1328 閱讀 5067

這裡只能用於計算十以內的表示式

/**

* ** * 內容: 運用棧對中綴表示式求值

* */

#include #include #include #define maxsize 100

char oper[maxsize]; //操作符棧

int topoper=-1; //棧頂指標

int nums[maxsize]; //數字棧

int topnums=-1; //棧頂指標

int medexp(char *exp,int *res); //計算表示式值

int countstacktoptwo(); //計算兩個棧頂元素相加

int count(char op,int num1,int num2,int *result); //計算每一步兩個數相加

int judgeprior(char op); //比較符號的優先順序

int main()

printf("%d\n",res);

return 0;

}int countstacktoptwo()

nums[++topnums]=result;

//printf("res=%d\n",result);

return 1; }

int medexp(char *exp,int *res)

else if(exp[i]=='(')

else if(topoper==-1)

else if(exp[i]=='+'||

exp[i]=='-'||

exp[i]=='*'||

exp[i]=='/')

else

oper[++topoper]=exp[i]; }}

else if(exp[i]==')')

}topoper--;

}i++;

}while(topoper!=-1)

} *res=nums[topnums];

return 1;

}

int count(char op,int num1,int num2,int *result)

else if(op=='-')

else if(op=='*')

else if(op=='/')

*result=num1/num2;

} return 1;

} int judgeprior(char op)

return 1;

}

使用棧結構計算中綴表示式

棧中元素的順序是先進後出,新增的元素總在棧頂,出棧也是先出棧頂,就像彈夾一樣。中綴表示式是我們人計算表示式的方式例如 2 3 2 3 3 3 我們總會括號優先,優先於 使用棧結構計算這個表示式的核心思想就是搞兩個棧,乙個存放數字,乙個存放符號。package com.dfsn.cloud.eurek...

計算中綴表示式

計算中綴表示式 可以稱得上是乙個特別經典的關於棧的演算法題,幾乎在所有資料結構教材中都會涉及,而且很多公司面試或者筆試的時候都會把這道題作為乙個考察點。可以說,這是一道必須要掌握的演算法題。中綴表示式 字尾表示式等概念在這裡就不贅述了,讓我們直奔主題。題目 輸入乙個中綴表示式,計算其結果。輸入的前提...

中綴表示式計算

雙棧法 數字棧和運算子棧 1.從前向後遇見數字就壓入數字棧 2.遇見左括號壓棧 3.遇見右括號則彈出數字棧頂兩個數字,和乙個運算子棧乙個運算子進行計算,直至遇見左括號,退括號,計算結果壓棧 4.遇見運算子,若符號棧頂的元素小於當前運算子優先順序,則入棧 若相等或大於則數字彈出倆,符號彈出乙個計算,直...