通过学习《大话数据结构》,练习对栈的使用,此测试是四则运算表达式求值。
先来main函数:
int main()
{
char zhongzhui[30+2] = {};
char houzhui[30+2] = {};
float result = 0.0;
printf("请输入要计算的式子:\n");
fgets(zhongzhui,30,stdin);
zhongzhui[strlen(zhongzhui) - 1] = '\0';
zhuanhuanFloat(zhongzhui,houzhui);
printf("*%s*\n",houzhui);
jisuanFloat(houzhui,&result);
printf("%f",result);
return 0;
}
首先通过中缀表达式转换成后缀表达式,函数如下:
void zhuanhuanFloat(char zhongzhui[], char houzhui[])
{
LinkStack S;
S.top = NULL;
S.count = 0;
int i = 0;
int j = 0;
char tmp;
while(zhongzhui[i]!='\0')
{
if((zhongzhui[i] >= '0') && (zhongzhui[i] <= '9'))
{
while(((zhongzhui[i] >= '0') && (zhongzhui[i] <= '9')) || zhongzhui[i] == '.')
{
houzhui[j] = zhongzhui[i];
j++;
i++;
}
houzhui[j] = ' ';