数据结构:利用栈来实现算术表达式求值的算法。

[复制链接]
查看11 | 回复2 | 2010-6-12 00:21:56 | 显示全部楼层 |阅读模式
使用键盘输入表达式字符序列,对于语法正确、不含变量的整数表达式,利用给定的运算符优先关系,实现表达式的求值。
具体功能包括:
程序运行时,输入合法的算术表达式,便可输出相应的计算结果。其中,表达式数据、中间值及最终结果包括数字、加减乘除和括号。
实现提示:
1. 将栈的定义和实现单独保存在头文件“stack.h”中,然后在表达式求值的源程序中包含此头文件(即#include“stack.h”)。
2.表达式求值源程序的具体实现
(1) 主函数完成表达式的输入和计算结果的输出。
(2) 函数EvaluateExpression的实现见算法3.4。
(3) 函数In(c)的实现可以采用以下方式:
Status In(SElemType c)// 应在前面有定义typedef char SElemType;
{ // 判断c是否为运算符
switch(c)
{

case'+':return TRUE;

……//补充完整
default:return FALSE;
}
}
(4) 函数Precede(t1,t2)的实现可以采用以下形式:
SElemType Precede(SElemType t1,SElemType t2)
{ //根据教材表3.1,判断两个运算符的优先关系
SElemType f;
switch(t2)
{

case '+':

case '-':if(t1=='('||t1=='#')

f='';

break;
……//补充完整
}
return f;
}
(5) 函数Operate(a,theta,b)的实现可以采用以下方式:
SElemType Operate(SElemType a,SElemType theta,SElemType b)
{
SElemType c;
a=a-48;
b=b-48;
switch(theta)
{

case'+':c=a+b+48;

break;
……//补充完整
}
return c;
}
帮忙写下EvaluateExpression和主函数就可以拉

回复

使用道具 举报

千问 | 2010-6-12 00:21:56 | 显示全部楼层
#include #include #include #defineerror 0#define ok 1#define overflow-1#define STACK_INIT_SIZE100#define STACKINCREMENT 10#define OPSETSIZE7char OPSET[OPSETSIZE]={'+','-','*','/','(',')','#'};unsigned char Prior[7][7] = {
//算符间的优先关系
'>','>','
回复

使用道具 举报

千问 | 2010-6-12 00:21:56 | 显示全部楼层
#include#include#include#defineerror0#defineok1#defineoverflow-1#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行