数据结构程序设计---求解算术表达式

数据结构程序设计---求解算术表达式

ID:13146256

大小:227.00 KB

页数:27页

时间:2018-07-20

数据结构程序设计---求解算术表达式_第1页
数据结构程序设计---求解算术表达式_第2页
数据结构程序设计---求解算术表达式_第3页
数据结构程序设计---求解算术表达式_第4页
数据结构程序设计---求解算术表达式_第5页
资源描述:

《数据结构程序设计---求解算术表达式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构课程设计题目  求解算术表达式姓名吴楚杰汤友松杨基长徐涛杨剑学号 3330363537系别  计算机系专业  网络工程级别   2008班级  二班2009年12月30日一、问题描述:设计一个程序,求解算术表达式。【基本要求】以字符序列的形式从键盘输入语法正确的、不含变量的整数表达式,实现对算术四则混合运算表达式的求值。二、问题分析:1)  数据结构描述1、为了实现算符优先算法使用两个工作栈,一个称作OPTR,用以寄存运算符;另一个称作OPND,用以寄存操作数或运算结果。2、在操作数和操作符入栈前,通过一个函数来判别,输入的是操作数还是操作符,操作数入OPND,操作符入OPTR。3

2、、 开始将‘#’入操作符栈,通过一个函数来判别算术运算符的优先级。且规定‘#’的优先级最低。在输入表达式的最后输入‘#’,代表表达式输入结束。在表达式输入过程中,遇操作数则直接入栈。遇到运算符则与栈顶运算符比较优先级,当前运算符优先级高(前面的运算还不应执行)则当前运算符入栈,扫描下一符号;否则栈顶运算符出栈,两操作数出栈,进行运算,所得结果入数栈,重新比较当前运算符(注意当前运算符未变)与新栈顶运算符。如此重复直到栈顶运算符与当前符号均为‘#’,运算结束。4、通过字符型数组的比较确定进入工作界面的密码。原始密码已经定了,但是注册的密码由一个数组来保存。再次登录的时候就可以通过比较原始密码

3、和注册码来决定是否进入。而且登陆次数限定在三次,错误次数也限定在三次。这样就人性化的允许犯错,但是又可以防止不法分子的偷盗行为。2)主要算法流程描述:1、栈的节构体形式typedefstructSqstack//计算数的结构体{elemtype*top;//栈顶指针elemtype*base;//栈底指针elemtypestacksize;//栈的大小}Sqstack,*Linklist;//机构体名和结构体指针typedefstructSqstack1//计算符的结构体{char*top;char*base;elemtypestacksize;}Sqstack1,*Linklist1;2

4、、栈的初始化elemtypeinitstack(Linklists)//初始化栈{s->base=(elemtype*)malloc(stack_size*sizeof(elemtype));if(!s->base)returnERROR;s->top=s->base;s->stacksize=stack_size;returnOK;}elemtypeinitstack1(Linklist1s)//初始化栈{s->base=(char*)malloc(stack_size*sizeof(char));if(!s->base)returnERROR;s->top=s->base;s->sta

5、cksize=stack_size;returnOK;}3、入栈elemtypepush(Linklists,elemtypee)//进栈{if(s->top-s->base>=s->stacksize){s->base=(elemtype*)realloc(s->base,(s->stacksize+stack_increasement)*sizeof(elemtype));if(!(s->base))return0;s->top=s->base+s->stacksize;s->stacksize+=stack_increasement;}*(++s->top)=e;return1;}e

6、lemtypepush1(Linklist1s,chare)//进栈{if(s->top-s->base>=s->stacksize){s->base=(char*)realloc(s->base,(s->stacksize+stack_increasement)*sizeof(char));if(!(s->base))return0;s->top=s->base+s->stacksize;s->stacksize+=stack_increasement;}*(++s->top)=e;return1;}4、取栈顶元素elemtypegettop(Sqstacks)//取栈顶元素{elemt

7、ypee;if(s.top==s.base){printf("Nonumberleft!");returnERROR;}e=*s.top;returne;}chargettop1(Sqstack1s)//取字符栈顶元素{chare;if(s.top==s.base)//判断有无字符{printf("Nonumberleft!");returnERROR;}e=*s.top;returne;}5、栈的优先级判断及其函数 +

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。