- 8
- 0
- 约2.04万字
- 约 19页
- 2017-09-02 发布于重庆
- 举报
表达式类型的实现c程序(功能全,可运行)
expression.cpp
#includeexpression.h
#includemath.h
#include stdio.h
#define pi 3.1415926
/*全局变量*/
int save_number[51];/*在按原表达式输入形式中,输入的常量保存到数组save_number中,常量最多为50个,0单元不用*/
char Expr_String[50];/*存放表达式的字符串*/
/*以字符序列的形式输入语法正确的前缀表达式,保存到字符串string*/
/*参数flag=0表示输出的提示信息是请输入正确的前缀表示式:*/
/*flag=1表示输出的提示信息为请以表达式的原书写形式输入正确表示式:*/
Status Input_Expr(char *string,int flag)
{
if(flag==0)printf(\n请输入正确的前缀表示式:);
else printf(\n请以表达式的原书写形式输入正确表示式:);
flushall();/*清理缓冲区*/
gets(string);/*从键盘输入一串字符串作为表达式*/
if(strlen(string)==1)/*输入的表达式字符串长度为1*/
if(string[0]==+||string[0]==-||string[0]==*||string[0]==/||string[0]==^)/*输入的表达式只有一个运算符*/
{ printf(\n表达式只有一个字符,为运算符,错误!);return ERROR;}
else if((string[0]=0string[0]9)||(string[0]=astring[0]=z)||(string[0]=Astring[0]=Z))
/*输入的表达式只有一个数字或字符*/
{ printf(\n表达式只有一个字符!);return OK;}
else {printf(\n输入的字符不是运算符也不是变量常量,错误!);return ERROR;}
return OK;
}
/*判断字符string[i],如果是0-9常量之间,二叉树结点存为整型;否则,存为字符型*/
void judge_value(BiTree *E,char *string,int i)
{
if(string[i]=0string[i]=9)/*为常量*/
{(*E)-data.tag=INT;(*E)-data.num=string[i]-48;}
else if(string[i]=1string[i]=20)/*为常量,常量存于数组save_number中*/
{(*E)-data.tag=INT;(*E)-data.num=save_number[string[i]];}
else/*为变量*/
{(*E)-data.tag=CHAR;(*E)-data.c=string[i];}
}
/*以正确的前缀表示式并构造表达式E*/
Status ReadExpr(BiTree *E,char *exprstring)
{
SqStack S;//定义顺序栈S
int i,len;/*len为表达式的长度*/
BiTree p,q;
(*E)=(BiTree)malloc(sizeof(BiTNode));/*申请二叉树的根结点的空间*/
(*E)-lchild=NULL;
(*E)-rchild=NULL;
len=strlen(exprstring);/*len赋值为表达式的长度*/
if(len==1)/*表达式长度为1时,二叉树只有根结点*/
judge_value(E,exprstring,0);/*将exprstring[0]存入二叉树的结点中*/
else
{
judge_value(E,exprstring,0);/*将exprstring[0]存入二叉树的结点中*/
InitStack(S);/*初始化栈*/
q=(*E);
Push(S,q);/*入栈*/
Push(S,q);/*入栈,根结点入栈两次是为判断先序输入的表达式是不是正确的表达式*/
for(i=1;ilen!StackEmpty(S);i++)//
{
p=(BiTree)malloc(sizeof(BiTNode));
judge_value(p,exprstring,i);/*将exprstring[i]存入二叉树的结点中*/
p-lchild=NULL;
p-r
您可能关注的文档
最近下载
- 专题2 数据采集与编码 学案(含解析)2025届高中信息技术.DOCX VIP
- 高中地理课件湘教版:1-1中国的人口和民族.ppt
- 鲁科版高中化学选择性必修1第3章物质在水溶液中的行为3.3.2沉淀溶解平衡的应用课件(内嵌音频+视频).ppt VIP
- 建筑施工安全管理论文【推荐】.doc VIP
- 2025年高考地理识图填图完全手册(扫描版).docx
- 防火封堵材料 GB23864-2023.pdf
- 专题2 数据采集与编码 课件 2025届高中信息技术.pptx VIP
- 专题1 数据与大数据 课件 2025届高中信息技术.pptx VIP
- 鲁科版高中化学选择性必修1第3章物质在水溶液中的行为3.3.1沉淀溶解平衡与溶度积(内嵌音频+视频).ppt VIP
- 2025年甘肃省高考物理试卷(含答案解析).docx VIP
原创力文档

文档评论(0)