📄 mvc87.tmp
字号:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include"Chang.h"
typedef struct qnode
{
char data;
struct qnode *leftchild;
struct qnode *rightchild;
}BiTree;
typedef struct
{
char a;
char b[10];
}Lpha;
int i;
//---------------------用后缀表达式构造二叉树
BiTree *Creat(char str[])
{
BiTree *p;
i--;
if(i<0)return NULL;
p=(BiTree*)malloc(sizeof(BiTree));
p->data=str[i];
if(str[i]=='|'||str[i]=='&'||str[i]=='!')
{
p->rightchild=Creat(str);
p->leftchild=Creat(str);
}
else {
p->rightchild=NULL;
p->leftchild=NULL;
}
return p;
}
//-----------------------------------------------------打印二叉树
void Print(BiTree *root,int n)
{
int i;
if(root==NULL)return;
Print(root->leftchild,n+1);
for(i=0;i<n;i++)
printf(" ");
printf("---");
printf("%c\n",root->data);
Print(root->rightchild,n+1);
}
//--------------------建立字符串名与字符映射表
int Simple(char str[],Lpha stu[],int n)
{
int i=0,j=0,t=0,k;
for(t=0;t<n;t++)
{
if(str[t]!='!'||str[t]!='&'||str[t]!='|')
stu[i].b[j++]=str[t];
else {
i++;
j=0;
}
}
for(k=0;k<i;k++)
stu[i].a=stu[i].b[0];
return i;
}
//--------------------------简化中缀表达式
int Mid(char c[],char a[],int n)
{
int i,j,k;
i=0;k=0;j=0;
for(i=0;i<n;i++)
if(c[i]=='!'||c[i]=='&'||c[i]=='|')
a[j++]=c[i];
else {
a[j++]=c[i];
while(c[i]!='!'&&c[i]!='&'&&c[i]!='|')
i++;
i--;
}
}
int main()
{//--------------------------字母和字符串的对应表
char a[100],b[100],c[100];
Lpha stu[100];
int nc,m;
BiTree *p;
printf("输入命题表达式:\n");
scanf("%s",c);
//--------------------------转化为简化的中缀
nc=strlen(c);
printf("简化的中缀表达式为:\n");
//Simple(c, stu,n);
//----------------------------
na=Mid(c,a,n);
a[na]='#';a[na]='\0';
printf("%s\n",a);
/*n=strlen(a);
m=Chang(a,n,b);
printf("%d\n",m);
i=m;
p=Creat(b);
Print(p,0);
memset(a,sizeof(a),0);*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -