️* 2022-03-19 23:46 采纳率: 100%
浏览 35
已结题

后缀表达式代码无法输出

#include<stdio.h>
#include<stdlib.h>
#define maxsize 10
typedef char Elemtype;
typedef struct sqstack
{
Elemtype p[maxsize];
int top;
}Sqstack;
void Initstack(Sqstack*&S)
{
S=(Sqstack*)malloc(sizeof(Sqstack));
S->top=-1;
}
void Push(Sqstack *&S,Elemtype e)
{
S->p[S->top]=e;
S->top++;
}
void Pop(Sqstack *&S,Elemtype &e)
{
S->p[S->top]=e;
S->top--;
}
void gettop(Sqstack S,Elemtype &r)
{
r=S->p[S->top];
}
bool stackEmtype(Sqstack S)
{
if(S->top==-1)
return true;
else
return false;
}
void trans(Elemtype exp,Elemtype postexp[20])
{
char e;
Sqstack
Optr;
Initstack(Optr);
int i=0;
while(exp!='\0')
{
switch(exp)
{
case '(':
Push(Optr,'(');
exp++;
break;
case '+':
while(!stackEmtype(Optr))
{
gettop(Optr,e);
if(e!='(')
{
postexp[i++]=e;
Pop(Optr,e);
}
else
break;
}
Push(Optr,'+');
exp++;
break;
case '-':
while(!stackEmtype(Optr))
{
gettop(Optr,e);
if(e!='(')
{
postexp[i++]='e';
Pop(Optr,e);
}
else
break;
}
Push(Optr,'-');
exp++;
break;
case '
':
while(!stackEmtype(Optr))
{
gettop(Optr,e);
if(e=='
'||e=='/')
{
postexp[i++]=e;
Pop(Optr,e);
}
else
break;
}
Push(Optr,'
');
exp++;
break;
case '/':
while(!stackEmtype(Optr))
{
gettop(Optr,e);
if(e=='
'||e=='/')
{
postexp[i++]=e;
Pop(Optr,e);
}
else
break;
}
Push(Optr,'/');
exp++;
break;
default:
while(*exp>='0'&&*exp<='9')
{
postexp[i++]=*exp;
exp++;
}
postexp[i++]='#';
}

}
while(!stackEmtype(Optr))
{
    gettop(Optr,e);
    postexp[i++]=e;
    Pop(Optr,e);
}
postexp[i]='\0';

}
int main()
{
Elemtype postexp[20];
int i=0;
char str[10];
scanf("%s",str);
trans(str,postexp);

printf("%s ",postexp);

}

img

  • 写回答

3条回答 默认 最新

  • CSDN专家-link 2022-03-20 07:48
    关注

    重截图可以看出来,系统运行崩溃了,异常退出
    void Pop(Sqstack * &S,Elemtype &e)
    {
    S->p[S->top]=e;
    S->top--;
    }
    这个Pop函数是错的,应该是e = S->p[S->top];
    =======
    void gettop(Sqstack * S,Elemtype &r)
    {
    r=S->p[S->top];
    }
    这个也不行,应该先检查S->top >= 0才能取值,否则崩溃

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月28日
  • 已采纳回答 3月20日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助