问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

200,用二叉树把中缀表达式转为后缀表达式

发布网友 发布时间:2022-05-27 19:16

我来回答

3个回答

热心网友 时间:2023-09-13 19:34

#include<stdio.h>
#define max 100
typedef struct node{
char a[max];
struct node *lchild,*rchild;
}bintree;
int count=0;
char array[max];
bintree * init(bintree * L)
{
L=(bintree *)malloc(sizeof(bintree));
L->rchild=L->lchild=NULL;
return L;
}
enter ()
{
int i=-1;
do
{
i++;
array[i]=getch();
putch(array[i]);
if(array[i]=='\b')
i=i-2;
if (array[i]=='='||array[i]=='\r') break;
}while(1);
if(array[i]=='\r') array[i]='=';
array[i+1]='\0';
}
char getfromarray(bintree **L)
{
int i=0;
while(array[count]<='9'&&array[count]>='0'){
(*L)->a[i]=array[count];
i++;
count++;
}
(*L)->a[i]='\0';count++;
return array[count-1];
}
bintree * createtree(bintree *L)
{
bintree *p,*q;
char a;
if(L==NULL) L=p=init(p);
a=getfromarray(&L);
while(a!='=')
{ q=init(q);
q->a[0]=a;
q->a[1]='\0';
switch(a)
{
case '+':
case '-': q->lchild=L;L=q; p=init(p);a=getfromarray(&p);L->rchild=p;break;
case '*':
case '/':
if(L->a[0]=='+'||L->a[0]=='-')
{p=init(p);strcpy(p->a,L->a);p->lchild=L;p->rchild=q;a=getfromarray(&L);L=p;}
else
{q->lchild=L;L=q;p=init(p);a=getfromarray(&p);L->rchild=p;}
break;
case '(': p=L;while(p->rchild) p=p->rchild;
if(p->lchild==NULL)
{ p->lchild=createtree(p->lchild);a=array[count];count++;break;}
else
{ p->rchild=createtree(p->rchild);a=array[count];count++;break;}

case ')': return L;
}
}
return L;
}
output(bintree *L)
{
if(L)
{
output(L->lchild);
output(L->rchild);
printf("%s ",L->a);
}
}
void main()
{
bintree *L=NULL;
clrscr();
enter();
L=createtree(L);
output(L);
}

热心网友 时间:2023-09-13 19:34

这个用二叉树比较难实现,以下我用的是表达式的方法把中缀变为后缀:

如图所示: 

(另外一个知道中找到的http://zhidao.baidu.com/question/261765295.html?an=0&si=2)

热心网友 时间:2023-09-13 19:34

期待答案
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 用C语言将中缀表达式转换为后缀表达式的程序出了点小问题 哪个帮我做一个中缀表达式转换成后缀表达式,要C语言,要带括号哦,我写一下午了没写出来,呜呜~~ 用C语言实现中缀表达式到后缀表达式的转换 求改正! C语言中缀转后缀表达式问题 中缀表达式转换成后缀表达式,包括加减乘除,c语言编程 C语言中缀表达式换后缀表达式,有错,求解 C语言代码将中缀表达式转换为后缀表达式,参数为字符型数组的中缀表达式,返回字符型数组的后缀表达式, 报关单续页样本。 和平精英,抽多少次,才能得到320火箭少女碎片? 火箭少女的枪多少钱能出 4399游戏盒怎么抽火箭少女? 和平精英抽火箭少女的,单抽跟十连抽有什么区别? 火箭少女500块钱可以出吗 火箭少女在哪种平台给免费抽出来? 个人房屋出租需要什么手续 怎样申请不用手机号注册 不用手机号如何申请 不用手机号怎么申请注册新账号 四川大熊猫保护区都有哪些? 怎么注册不用手机号 C语言数据结构(写出下列中缀表达式的后缀表达式) 计算器把中缀表达式转换为后缀表达式的原理是什么?不要代码,求解答 数据结构问题(C语言) 1.写个程序中缀表达式转换成后缀表达式 2.创建哈夫曼树 3.用先序中序后序遍历二叉 在做一个中缀表达式转化为后缀表达式的做业,遇到问题,运行输入数据之后提示Debug error,要终止。。。 C语言怎么识别后缀式 c语言求表达式的值(前、中、后缀表达式混在一起) 沈阳哪家个人写真照的比较好? 初中教资语文教学设计可以不写导入吗 无可预定班次是什么意思 再续意难忘第二部的问题 当前暂无火车票班次可预订是什么意思? 当前预约周期无排班信息什么意思 暂不能订该车次该日期的车票是什么意思 初中语文苏教版八年级下册第一单元第2课《白杨礼赞》优质课公开课教案教师资格证面试试讲教案 汽车票不可预订是什么意思? 再续意难忘第二部总共几集 12306高铁动车班次一直显示该日期没有这个班次什么意思 教师资格证语文教案怎么写 如何养好仙人掌类植物? 如果网上预定汽车票,可是确没有所需日期的车次,是不是没车