liyanhong 发布留言 2008-10-25 16:24
请教一个问题(未解决 )
//中缀表达式转后缀表达式
//(5*(((9+8)*(4*6))+7))
//???'*'与'+'没有按预想的输出
#include
#include
#include
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 {
if (a=='+')||(a);
if((a)<='9')
printf("%c ",a [em16]
[ 本帖最后由 liyanhong 于 2008-10-25 21:16 编辑 [/it]]nuciewth 发布留言 2008-10-25 16:51
数据结构区已经给出回答,输出格式错误liyanhong 发布留言 2008-10-25 16:59
恩 谢谢nuciewth[em01]liyanhong 发布留言 2008-10-25 21:09
进来看看
//后缀表达式求值
////598+46**7+*
#include
#include
#include
typedef struct
{
int *top;
int *base;
}SqStack;
int STACKpop(SqStack *S)
{
if(S->top>S->base)
return *(--S->top);
}
void STACKpush(SqStack *S,int d)
{
*S->top=d;
S->top++;
}
main(int argc,char *argv[])
{
char *a=argv[1];
int i,N;
SqStack S;
N=strlen(a);
S.base=(int *)malloc(N*sizeof(int));
S.top=S.base;
for(i=0;i {
if(a=='*')
STACKpush(&S,(STACKpop(&S)*STACKpop(&S)));
if((a<='9'));
STACKpush(&S,ayfhanbing 发布留言 2008-10-25 21:46
思考中 楼上的做参考不错
页: [1]