没有合适的资源?快使用搜索试试~ 我知道了~
表达式求值问题 数据结构
5星 · 超过95%的资源 需积分: 31 15 下载量 43 浏览量
2009-04-29
07:15:52
上传
评论
收藏 111KB DOC 举报
温馨提示
试读
14页
一个课程设计报告,里面含有完整的源码。需求分析如下: (1) 以字符序列的形式从终端输入语法正确的不含变量的整数表达式,将该中缀表达式转换为后缀表达式。 (2) 实现对后缀表达式的求值。 (3) 演示在求值过程中运算符栈,操作数栈,输入字符和主要操作的变化过程。
资源推荐
资源详情
资源评论
《数据结构》
课程设计报告书
课程题目: 表达式求值问题
一.需求分析
(1) 以字符序列的形式从终端输入语法正确的不含变量的
整数表达式,将该中缀表达式转换为后缀表达式。
(2) 实现对后缀表达式的求值。
(3) 演示在求值过程中运算符栈,操作数栈,输入字符和
主要操作的变化过程。
二.概要设计
表达式求值的算法分为两步进行:首先将中缀表达式转换为后
缀表达式,再求后缀表达式的值。
(1) 将中缀表达式转换为后缀表达式,对于字符串形式的
合法的中缀表达式,“(”的运算优先级最高,“*”次之,
“+”,“—”最低,同级运算符从左到右按顺序运算。转
化过程算法描述如下:从左到右对中缀表达式进行扫
描,每次处理一个字符。若遇到左括号入栈。如遇到
数字,原样输出。若遇到运算符,如果它的优先级比
栈顶元素优先级高,则直接入栈,否则栈顶元素出栈,
直到新栈顶数据元素的优先级比它低,然后将它直接
入栈。重复以上步骤,直到表达式结束。若表达式已
全部结束,将栈顶元素全部出栈。
(2) 后缀表达式求值算法描述如下:从左到右对后缀表达
式进行扫描,每次处理一个字符。若遇到数字,转化
为整数,入栈。若遇到运算符,出栈两个值进行运算,
运算结果再入栈。重复以上步骤,直到表达式结束,
栈中最后一个数据元素就是所求表达式的结果。
三.详细设计
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define MAXNUM 100
typedef int DataType;
struct SeqStack
{ DataType s[MAXNUM];
int t;
};
typedef struct SeqStack *PSeqStack;
PSeqStack createEmptyStack_seq()
{
PSeqStack pastack;
pastack = (PSeqStack)malloc(sizeof(struct SeqStack));
if (pastack == NULL)
printf("Out of space!!\n");
else
pastack->t = -1;
return pastack;
} int isEmptyStack_seq(PSeqStack pastack)
{
return pastack->t == -1;
} void push_seq(PSeqStack pastack, DataType x)
{
if (pastack->t >= MAXNUM - 1)
printf("Overflow!\n");
else
{
pastack->t = pastack->t + 1;
pastack->s[pastack->t] = x;
}
} void pop_seq(PSeqStack pastack)
{
if (pastack->t == -1)
printf("Underflow!\n");
else
pastack->t = pastack->t - 1;
} DataType top_seq(PSeqStack pastack)
{
return pastack->s[pastack->t];
} int infixtoSuffix(const char * infix, char * suffix)
{ /*将中缀表达式转换为后缀表达式,顺利转换返回 true,若转换过程中
发现中缀表达式非法则返回 false*/
int state_int = FALSE;
/*state_int 记录状态,等于 true 表示刚读入的是数字字符,等于 false 表示
刚读入的不是数字字符,
设置这个变量是为了在每输出一个整数后输出一个空格,以免连续输出
剩余13页未读,继续阅读
资源评论
- 蓝渊麟汐2014-04-20可以运行 但是我想要的是c++的
wenhaixiao
- 粉丝: 5
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功