将中缀表达式转换成后缀表达式并输出,然后计算出后缀表达式的值。

程序:

#include
#include
#include
#include"stack.h"char* infix_to_postfix(char* str){    int i,j=0;    int SIZE=strlen(str);    if(str==NULL)    { printf("empty string!!!\n"); return NULL;    }    Stack s=CreateStack(SIZE);    char *tmpstr=malloc(sizeof(char)*(SIZE+1));    if(tmpstr==NULL)    { printf("tmpstr is empty!\n"); return NULL;    }    for(i=0;i

上面的程序有一个缺点,那就是只能得到sizeof(char)大小的计算结果,比如char为1个字节,那么表达式计算结果最大只能为256. 原因就在compute()函数中用的栈中的数组是char类型的。如果将infix_to_postfix()函数与compute()函数分开,写入不同的.c文件中,使他们调用的栈的数组分别为char和int类型的,那么就可以计算任意范围的表达式了。