将中缀表达式转换成后缀表达式并输出,然后计算出后缀表达式的值。
程序:
#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类型的,那么就可以计算任意范围的表达式了。