实验2 栈和队列的应用-算术表达式求值.doc

实验2 栈和队列的应用-算术表达式求值.doc

ID:57330542

大小:153.50 KB

页数:5页

时间:2020-08-12

实验2 栈和队列的应用-算术表达式求值.doc_第1页
实验2 栈和队列的应用-算术表达式求值.doc_第2页
实验2 栈和队列的应用-算术表达式求值.doc_第3页
实验2 栈和队列的应用-算术表达式求值.doc_第4页
实验2 栈和队列的应用-算术表达式求值.doc_第5页
资源描述:

《实验2 栈和队列的应用-算术表达式求值.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.实验题目栈和队列的应用2.实验内容算术表达式求值3.实验目的掌握栈和队列的概念及工作原理,运用其原理完成实验题目中的内容。4.实验要求为了更好的掌握与理解课堂上老师所讲的概念与原理,实验前要认真预习所做的实验内容及编写源程序伪码(写在纸上及盘中均可)以便在实验课中完成老师所布置的实验内容。5.概要设计原理6.详细程序清单及注释说明#include#include#include#include#defineNULL0#defineOK

2、1#defineOVERFLOW-2#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT20/*定义字符类型栈*/typedefstruct{intstacksize;char*base;char*top;}SqStack;/*-----------------全局变量---------------*/SqStackOPTR,OPND;//定义运算符栈和操作数栈charexpr[255];/*存放表达式串*/char*ptr=expr;intInitStack(SqStack*s

3、)//构造运算符栈{s->base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));if(!s->base)exit(OVERFLOW);s->top=s->base;s->stacksize=STACK_INIT_SIZE;returnOK;}charIn(charch)//判断字符是否是运算符,运算符即返回1{return(ch=='+'

4、

5、ch=='-'

6、

7、ch=='*'

8、

9、ch=='/'

10、

11、ch=='('

12、

13、ch==')'

14、

15、ch=='#');}intPush(SqSta

16、ck*s,charch)//运算符栈插入ch为新的栈顶元素{*s->top=ch;s->top++;return0;}charPop(SqStack*s)//删除运算符栈s的栈顶元素,用p返回其值{charp;s->top--;p=*s->top;returnp;}charGetTop(SqStacks)//用p返回运算符栈s的栈顶元素{charp=*(s.top-1);returnp;}/*判断运算符优先权,返回优先权高的*/charPrecede(charc1,charc2){inti=0,j=0;staticch

17、ararray[49]={'>','>','<','<','<','>','>','>','>','<','<','<','>','>','>','>','>','>','<','>','>','>','>','>','>','<','>','>','<','<','<','<','<','=','!','>','>','>','>','!','>','>','<','<','<','<','<','!','='};switch(c1){/*i为下面array的横标*/case'+':i=0;break;case'-'

18、:i=1;break;case'*':i=2;break;case'/':i=3;break;case'(':i=4;break;case')':i=5;break;case'#':i=6;break;}switch(c2){/*j为下面array的纵标*/case'+':j=0;break;case'-':j=1;break;case'*':j=2;break;case'/':j=3;break;case'(':j=4;break;case')':j=5;break;case'#':j=6;break;}return

19、(array[7*i+j]);/*返回运算符*/}/*操作函数*/intOperate(inta,charop,intb){switch(op){case'+':return(a+b);case'-':return(a-b);case'*':return(a*b);case'/':return(a/b);}return0;}intnum(intn)//返回操作数的长度{charp[10];itoa(n,p,10);//把整型转换成字符串型n=strlen(p);returnn;}intEvaluateExpressio

20、n()//主要操作函数{charc,theta,x;intn,m;inta,b;c=*ptr++;while(c!='#'

21、

22、GetTop(OPTR)!='#'){if(!In(c)){if(!In(*(ptr-1)))ptr=ptr-1;m=atoi(ptr);//取字符串前面的数字段n=num(m);Push(&OPND,m)

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

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

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