数据结构中缀式中缀表达式改后缀表达式并求值.doc

数据结构中缀式中缀表达式改后缀表达式并求值.doc

ID:60836671

大小:596.50 KB

页数:6页

时间:2020-12-21

数据结构中缀式中缀表达式改后缀表达式并求值.doc_第1页
数据结构中缀式中缀表达式改后缀表达式并求值.doc_第2页
数据结构中缀式中缀表达式改后缀表达式并求值.doc_第3页
数据结构中缀式中缀表达式改后缀表达式并求值.doc_第4页
数据结构中缀式中缀表达式改后缀表达式并求值.doc_第5页
资源描述:

《数据结构中缀式中缀表达式改后缀表达式并求值.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《数据结构》课程设计报告课程设计题目:中缀表达式改后缀表达式并求值一.实验目的·掌握栈的特征及基本操作,如入栈、出栈等,栈的顺序存储结构和链式存储结构的实现,以便在实际问题中灵活应用。·掌握栈的典型应用——中缀表达式转后缀表达式,并利用后缀表达式求值。一.实验内容(一)中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈6.最终将栈中

2、的元素依次出栈,输出。(二)二.实验分析程序源码(要求对每个函数及主要代码加上注释语句),源码出处。////main.c//后缀表达式求值////Createdby颜彦闻on14/12/2.//Copyright(c)2014年颜彦闻.Allrightsreserved.//#include#include#defineStackSize100#defineQueueSize100typedefcharDataType;typedefstruct{chardata[100];intfront,rear;}SeqQueue;//定义队列类型voidInit

3、Queue(SeqQueue*Q)//初始化队列{Q->front=0;Q->rear=0;}intQueueEmpty(SeqQueueQ)//判空{returnQ.rear==Q.front;}voidEnQueue(SeqQueue*Q,DataTypex)//元素入队列函数{if((Q->rear+1)%QueueSize==Q->front)printf("Queueoverflow");else{Q->data[Q->rear]=x;Q->rear=(Q->rear+1)%QueueSize;}}DataTypeDeQueue(SeqQueue*Q){charx;if(Queue

4、Empty(*Q))return0;else{x=Q->data[Q->front];Q->front=(Q->front+1)%QueueSize;returnx;}}//栈的相关操作typedefstruct{DataTypedata[100];inttop;}SeqStack;voidInitStack(SeqStack*S)//栈的初始化{S->top=-1;}voidPush(SeqStack*S,DataTypex)//进栈函数{if(S->top==StackSize-1)printf("stackoverflow");else{S->top=S->top+1;S->data[

5、S->top]=x;}}DataTypePop(SeqStack*S)//退栈顶指针函数{if(S->top==-1){printf("stackunderflow");return0;}elsereturnS->data[S->top--];}DataTypeGetTop(SeqStackS)//取栈顶元素{if(S.top==-1){printf("stackempty");return0;}elsereturnS.data[S.top];}intPriority(DataTypeop)//求运算符优先级函数{switch(op){case'(':case'#':return0;case

6、'-':case'+':return1;case'*':case'/':return2;}return-1;}voidCTPostExp(SeqQueue*Q){SeqStackS;charc,t;InitStack(&S);Push(&S,'#');do{c=getchar();switch(c){case'':break;case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':EnQueue(Q,c);break;case'(':Push(&S,c);break;case')':case'#':{do

7、{t=Pop(&S);if(t!='('&&t!='#')EnQueue(Q,t);}while(t!='('&&S.top!=-1);break;}case'+':case'-':case'*':case'/':while(Priority(c)<=Priority(GetTop(S))){t=Pop(&S);EnQueue(Q,t);}Push(&S,c);break;}}while(c!='#');}D

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

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

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