数据结构表达式求值
#include<string.h>#include<ctype.h>
#include<malloc.h>
#include<limits.h>
#include<stdio.h>
#include<stdlib.h>
#include<io.h>
#include<math.h>
#include<iostream.h>
#include<process.h>
#include<conio.h>//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
typedef int Status;//Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int ElemType;
const int STACK_ INIT_SIZE=100;
const int STACKINCREMENT=10;
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;}Stack;
Status InitStack(Stack &S){//构造一个空栈S
S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!S.base)
exit (ERROR);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;}
Status Push(Stack &S,ElemType e){//插入元素e为新的栈顶元素
if(S.top-S.base>=S.stacksize) {
S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!S.base)
exit(OVERFLOW);
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT; }
*S.top++=e; return OK;}
Status Pop(Stack&S,ElemType &e){//若栈不空,则删除,用e返回其值,并返回OK;否则返回ERROR
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;}
Status GetTop(Stack &S){//若栈不空,用e返回S的栈顶元素,并返回OK;否则返回ERROR
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;}
Status GetTop(Stack &S){//若栈不空,用e返回S的栈顶元素,并返回OK;否则返回ERROR
if(S.top==S.base)
return ERROR;
return *(S.top-1 ''}
Operate.h:
#include"Stack.h"
Status In(char c) {//判别c是否为运算符
if(c=='+'||c=='-'||c=='*'||c=='/'||c=='('||c==')'||c=='#')
return OK;
else
return ERROR; }
Status Operate(int a,char c,int b){//二元运算
switch(c){
case '+': return a+b;break;
case '-': return a-b;break;
case '*': return a*b;break;
case '/': if(b==0) {printf(" (提示:存在除数为零错误)\n");
return ERROR;}//除数不能为零
else return a/b;
break; }
}
char precede(char a,char b){//算符间优先关系
switch(a){
case '+':
switch(b) {
case '+': return '>';break;
case '-': return '>';break;
case '*': return '<';break;
case '/': return '<';break;
case '(': return '<';break;
case ')': return '>';break;
case '#': return '>';break; }break;
case '-':
switch(b) {
case '+': return '>';break;
case '-': return '>';break;
case '*': return '<';break;
case '/': return '<';break;
case '(': return '<';break;
case ')': return '>';break;
case '#': return '>';break; }break;
case '*':
switch(b) {
case '+': return '>';break;
case '-': return '>';break;
case '*': return '>';break;
case '/': return '>';break;
case '(': return '<';break;
case ')': return '>';break;
case '#': return '>';break;
}break;
case '/':
switch(b) {
case '+': return '>';break;
case '-': return '>';break;
case '*': return '>';break;
case '/': return '>';break;
case '(': return '<';break;
case ')': return '>';break;
case '#': return '>';break;
}break;
case '(':
switch(b) {
case '+':return '<';break;
case '-':return '<';break;
case '*':return '<';break;
case '/':return '<';break;
case '(':return
各位大佬,这是数据结构里面表达式求值的C语言程序,但是还做不出来,麻烦大佬帮帮我解决一下,谢谢