⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 expr.h

📁 数据结构课程设计,表达式求值.大家看看,如果功能不好再找我修改
💻 H
字号:
#ifndef EXPR_H
#define EXPR_H
  
#define TRUE	1
#define FALSE	0
#define OK		1
#define ERROR	0
#define IBFEASIBLE  -1
#define OVERFLOW    -2 

#define MAXLEN  20
#define MAXSIZE 20

typedef	int	Status;
//typedef BiTree QElemType;
typedef enum{ OPER, VAR, ORD }ElemTag;//运算符,变量,常量
typedef struct ExpNode
{
	ElemTag tag;		//标记
	union{
		char expr[4];	//存放运算符名
		struct{
			char var;	//变量名
			float val;	//变量的值
		}vary;			//存放变量
		int ordina;     //存放常量值
	};
	struct ExpNode *lchild, *rchild;		/* 左右孩子指针 */
} *ExpTree;							/* 二叉树的二叉链表存储表示 */





int Random( int   nMin, int   nMax );
//返回nMin到nMax之间的随机数
void FindVary( char * c, char * e );
//找出表达式中的变量
Status ArrayCreateExp( ExpTree &E, char *ch, int &i );
//从ch数组中读取字符串,构造表达式
void CreateExp( ExpTree &E, char *ch, int &i ) ;
//Status InputCreateExp( ExpTree &E );  
//从键盘先序输入来构造表达式树T
Status Visit( ExpTree e );
//输出e的内容
void InorderExp( ExpTree E, Status ( * Visit )( ExpTree e ) );
//输出中序表达式用带括号的中缀表示式输出
Status Assign( ExpTree E, char v, float c ) ;
//对表达式内的所有v,赋值c
float Value( ExpTree E );
//计算表达式的值
ExpTree Compound( char p, ExpTree e1, ExpTree e2 );
//5.构造一个新的复合表达式(E1)P(E2)	
Status Diff( ExpTree &E, char V );
//求表达式E对变量V的导数
void MergeConst( ExpTree E );
//合并表达式种所有常数运算
Status PreOrderTraverse( ExpTree E, Status ( * Visit )( ExpTree e ) );
//波兰式输出
Status PostOrderTraverse( ExpTree E, Status ( * Visit )( ExpTree e ) );
//逆波兰式输出

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -