ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:102.28KB ,
资源ID:1787771      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1787771.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计表达式翻译本科论文.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计表达式翻译本科论文.docx

1、数据结构课程设计表达式翻译本科论文数据结构课程考核报告 表达式的翻译学号: 姓名: 专业: 软件工程专业 班级: 15级云计算1班 指导教师: 南 阳 理 工 学 院 软 件 学 院2016年12月 目录1.需求分析-3 1.1问题描述-3 1.2基本要求-32.系统设计-33.程序流程图-44.类关系图-65. 实现代码-76.个人总结-77.参考书目-7一需求分析 1.1问题描述 编写完整程序,将中缀表达式翻译成后缀表达式。表达式由操作数 ( 变量 ) 、操作 ( 运算符 ) 以及小括弧 “ ( ” 和 “ ) ” 组成,其中:(1)操作包括算术运算、关系运算和逻辑运算三类;(2)操作数为

2、单个字符或由字母和数字任意多个字符构成;(3)能够识别出简单的错误,如括弧不匹配。 1.2 基本要求 输入:中缀表达式,80个字符以内。 输出:运算结果 功能:将中缀表达式转化为后缀表达式 二系统设计 根据题目要求,将中缀表达式转化为后缀表达式。问题的解决方案有两种,分别是利用栈结构实现算数表达式的四则运算或者利用二叉树把中缀表达式转化为前缀表达式,我选择栈结构与树结构相结合来实现算数表达式的转化。算法思想:运用栈和队列来将中缀转换为后缀,栈用来储存字符,队列用来存储后缀表达式。:输入字符串c,若是数字的话直接进入队列,若是符号,为*/(,则线检查栈中的栈顶元素,前提是栈不为空,若栈不为空的话

3、,栈顶元素为*|/,则先将栈中的元素入队,如果栈顶是+-这些优先级小的,则直接将c入栈。:如果c是优先级为“+”“-”的字符,先看一下栈是否为空,接着判断栈顶元素是否为“(”,若是,则继续将c进栈,否则的话,将栈中的元素全部出栈,直到栈空。:若c为“)”则将栈中所有符号弹栈并进入队列。:若c为“#”,则结束,并将栈中的剩余的符号全部入队列。:打印队列中的,出队打印。 3程序流程图else ifC!=#若为数else ifelse ifwhile栈空else ifelse ifelse ifwhile栈空4类关系图(1).头文件:#include#include(2)宏定义:#define OK

4、 1#define ERROR 0#define STACK_SIZE 20#define STACK_INCREMENT 10#define QUEUE_SIZE 20(3)栈的定义结构体typedef int Status;typedef char StackElemtype; /栈的类型typedef struct Stack StackElemtype* base; StackElemtype* top; int stackSize;Stack;(5)初始化栈:Status StackInit(Stack* s)(6)出栈:Status Pop(Stack* s,StackElemty

5、pe* value)(7)进栈:Status Push(Stack* s,StackElemtype value)(8)求栈的长度:int StackLength(Stack s)(9)定义队列的结构体:typedef double QueueElemtype;typedef char QueueOperatorValue;typedef struct QueueNode /定义队列结构体 QueueElemtype data; QueueOperatorValue operator; struct QueueNode* next; int flag;QueueNode,*QueueNodeP

6、tr;typedef struct Queue QueueNodePtr front; QueueNodePtr rear;Queue;(10)初始化队列Status QueueInit(Queue* q)(11)队列的插入:Status QueueInsert(Queue* q,QueueElemtype value)(12)出队列Status QueueInsert_operatorValue(Queue* q,QueueOperatorValue value)(13)中缀转后缀函数Status Infix2Postfix(Queue* q)(14)打印后缀表达式Status ShowQu

7、eue(Queue q)(15)主函数int main() Queue q; QueueInit(&q); Infix2Postfix(&q); ShowQueue(q); return 0;5运行截图六实现代码#include#include#define OK 1#define ERROR 0#define STACK_SIZE 20#define STACK_INCREMENT 10#define QUEUE_SIZE 20typedef int Status;typedef char StackElemtype; /栈的类型typedef struct Stack StackElemt

8、ype* base; StackElemtype* top; int stackSize;Stack;Status StackInit(Stack* s) /初始化栈 s-base = (StackElemtype*)malloc(sizeof(StackElemtype) * STACK_SIZE); /申请栈的空间 if( !s-base ) return ERROR; s-top = s-base; s-stackSize = STACK_SIZE; return OK;Status Pop(Stack* s,StackElemtype* value) /出栈操作 if( s-base

9、= s-top ) printf(nstack emptyn); return ERROR; *value = *(-(s-top); return OK;Status Push(Stack* s,StackElemtype value) /进栈操作 if( s-top - s-base = s-stackSize) s-base = (StackElemtype*)realloc(s-base,sizeof(StackElemtype) * (STACK_INCREMENT + STACK_SIZE); if( !s-base ) return ERROR; s-top = s-base +

10、 STACK_SIZE; s-stackSize = STACK_SIZE + STACK_INCREMENT; *(s-top) = value; s-top+; return OK;int StackLength(Stack s) /求栈的长度 return s.top - s.base;typedef double QueueElemtype;typedef char QueueOperatorValue;typedef struct QueueNode /定义队列结构体 QueueElemtype data; QueueOperatorValue operator; struct Qu

11、eueNode* next; int flag;QueueNode,*QueueNodePtr;typedef struct Queue QueueNodePtr front; QueueNodePtr rear;Queue;Status QueueInit(Queue* q) /队列初始化 q-front = (QueueNodePtr)malloc(sizeof(QueueNode); if( !q-front ) return ERROR; q-rear = q-front; q-rear-next = NULL; return OK;Status QueueInsert(Queue*

12、q,QueueElemtype value) /队列插入 QueueNodePtr new; new = (QueueNodePtr)malloc(sizeof(QueueNode); if( !new ) return ERROR; new-data = value; new-flag = 1; new-next = NULL; q-rear-next = new; q-rear = new; return OK;Status QueueInsert_operatorValue(Queue* q,QueueOperatorValue value) QueueNodePtr new; new = (QueueNodePtr)malloc(sizeof(QueueNode); if( !new ) return ERROR; new-operator = value; new-flag = 0; new-next = NULL; q-rear-next = new; q-rear = new; return OK;/利用栈将中缀表达式转化为后缀表达式:Stat

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1