请教一个问题(后缀表达式求值出了问题)
//中缀表达式转后缀表达式//(5*(((9+8)*(4*6))+7))
//???'*'与'+'没有按预想的输出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct
{
char *base;
char *top;
}SqStack;
void STACKpop(SqStack *S)
{
printf("%c ",*--S->top);
}
void STACKpush(SqStack *S,char *c)
{
*S->top=*c;
S->top++;
}
main(int argc,char *argv[])
{
char *a=argv[1];
int i,N;
SqStack S;
N=strlen(a);
S.base=(char *)malloc(N*sizeof(char));
S.top=S.base;
for (i=0;i<N;i++)
{
if (a[i]==')')
STACKpop(&S);
if ((a[i]=='+')||(a[i]=='*'))
STACKpush(&S,&a[i]);
if((a[i]>='0')&&(a[i])<='9')
printf("%c ",a[i]);
}
printf("\n");
}
[[it] 本帖最后由 liyanhong 于 2008-10-25 19:15 编辑 [/it]]