表达式求值的一个有关问题

表达式求值的一个问题
这个星期我做了一个表达式求值的程序(输入、输出和中间结果均只能是0~9):
大概是这样的:输入一个中序表达式,用一个转换程序变为后序表达式,再对后序表达式求值,这两个子程序我都做出来了然后是主程序:我将转换出来的后序表达式存储再一个数组里,将数组头指针传递给求值程序,但就是这里出错了。希望高手指教!谢谢!!

#define   STACK_INIT_SIZE   20
#define   STACKINCREMENT   2
typedef   char   SElemType;
typedef   struct   SqStack{              
        SElemType   *base;
        SElemType   *top;
        int   stacksize;
}SqStack;

Status   InitStack(SqStack   *S){                   /*初始化栈     */
        (*S).base   =   (SElemType   *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
        if(!(*S).base)
exit(OVERFLOW);
        (*S).top   =   (*S).base;
        (*S).stacksize   =   STACK_INIT_SIZE;
        return   OK;
}

char   GetTop(SqStack   S){                 /*取栈顶元素     */
        if(S.top   ==   S.base)
return   ERROR;
        return   *(S.top   -   1);
}

Status   Push(SqStack   *S,SElemType   e){           /*入栈       */
        if((*S).top   -   (*S).base   > =   (*S).stacksize){
(*S).base   =   (SElemType   *)realloc((*S).base,
  ((*S).stacksize   +   STACKINCREMENT)   *   sizeof

(SElemType));
if   (!(*S).base)
        exit   (OVERFLOW);
(*S).top   =   (*S).base   +   (*S).stacksize;
(*S).stacksize   +=   STACKINCREMENT;
        }
        *((*S).top)++   =   e;
        return   OK;
}

char   Pop(SqStack   *S,SElemType   *e){       /*出栈     */
        if((*S).top   ==   (*S).base)
return   ERROR;
        *e   =   *   --(*S).top;
        return   *e;
}

Status   In(char   c){                   /*判断是否为运算符   */
        int   i;
        int   j   =   0;
        char   OP[]   =   { '+ ',   '- ',   '* ',   '/ ',   '( ',   ') ',   '# '};
        for   (i   =   0;   i   <=   6;   i++){
if   (c   ==   OP[i])
        j++;
        }
        if   (j)
return   TRUE;
        else
return   FALSE;
}

char   Precede(char   opnd1,   char   opnd2){       /*运算符优先级   */
        int   i,   j;
        char   guanxi[7][7]={           '> ', '> ', ' < ', ' < ', ' < ', '> ', '> ',
                                        '> ', '> ', ' < ', ' < ', ' < ', '> ', '> ',