逆波兰式逆波兰式
#include
#include
#define maxsize 100
void main()
{
char str[maxsize];/*存储原算术表达式*/
char exp[maxsize];/*存储转换成的逆波兰式*/
char stack[maxsize];/*作为栈使用*/
char ch;
int i,j,t,top=0;/*t作为exp的下标,top作为stack的下标,i作为str的下标*/
i=0;/*获取用户输入的表达式信息*/
do
{
i++;
scanf(...
逆波兰式
#include
#include
#define maxsize 100
void main()
{
char str[maxsize];/*存储原算术达式*/
char exp[maxsize];/*存储转换成的逆波兰式*/
char stack[maxsize];/*作为栈使用*/
char ch;
int i,j,t,top=0;/*t作为exp的下标,top作为stack的下标,i作为str的下标*/
i=0;/*获取用户输入的表达式信息*/
do
{
i++;
scanf("%c",&str[i]);
printf("%c",str[i]);
}while(str[i]!='#'&&i='0'&&ch<='9')/*判断为数字*/
{
exp[t]=ch;t++;
}
else
if(ch=='(')
{top++;stack[top]=ch;}
else if(ch==')')
{
while (stack[top]!='(')
{exp[t]=stack[top];top--;t++;}
top--;
}
else if(ch=='+'||ch=='-')
{
while(top!=0&&stack[top]!='(')
{exp[t]=stack[top];top--;t++;}
top++;stack[top]=ch;
}
else if(ch=='*'||ch=='/')
{
while(stack[top]=='*'||stack[top]=='/')
{exp[t]=stack[top];top--;t++;}
top++;stack[top]=ch;
}
ch=str[i];i++;
}
while(top!=0)
{
exp[t]=stack[top];
t++;top--;
}
exp[t]='#';
for(j=0;j<=t;j++)
{printf("%c ",exp[j]);}
printf("\n");
}
本文档为【逆波兰式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。