欢迎来到天天文库
浏览记录
ID:18405186
大小:84.00 KB
页数:7页
时间:2018-09-17
《数据结构与算法实验任务书2014-s3new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、安徽财经大学管工学院计算机系《数据结构与算法》实验报告实验3栈和队实验室:DJ2-204实验日期:2014年4月4日星期五周次:第6周班级:12计科3学号:20124122姓名:张翔一、开发环境及工具:1.软件环境:2.硬件环境:二、你的选题:选题1:算术表达式的求值选题2:迷宫问题选题3:停车场管理选题4:可以实现多种进制转换和四则运算的计算器也可以选择自拟题,经过老师同意后使用三、实验目的:(请自己填写,不少于50字)(提示:通过……实验掌握……、熟练……、了解……)通过编写程序来求表达式求值实验掌握了队和栈的应用,熟练的掌握了如何解决问题并实现。了解了栈和队的特点
2、和应用四、存储结构说明和定义:基本操作:InitStack(&S)操作结果:构造一个空栈S。GetTop(S)初始条件:栈S已存在。操作结果:用P返回S的栈顶元素。Push(&S,ch)初始条件:栈S已存在。操作结果:插入元素ch为新的栈顶元素。Pop(&S)初始条件:栈S已存在。操作结果:删除S的栈顶元素。2013年3月19日7安徽财经大学管工学院计算机系《数据结构与算法》实验报告In(ch)操作结果:判断字符是否是运算符,运算符即返回1。Precede(c1,c2)初始条件:c1,c2为运算符。操作结果:判断运算符优先权,返回优先权高的。Operate(a,op,b
3、)初始条件:a,b为整数,op为运算符。操作结果:a与b进行运算,op为运算符,返回其值。num(n)操作结果:返回操作数的长度。EvalExpr()初始条件:输入表达式合法。操作结果:返回表达式的最终结果。}ADTStack五、主要算法:给出程序的概要设计或流程图,给出核心函数的算法,给出每个子函数的函数头。1.表达式求值#include#include#include#defineNULL0#defineOK1#defineERROR-1#defineSTACK_INIT_SIZE100#defineSTAC
4、KINCREMENT20/*定义字符类型栈*/typedefstruct{intstacksize;char*base;char*top;}Stack;/*定义整型栈*/typedefstruct{intstacksize;int*base;int*top;}Stack2;2013年3月19日7安徽财经大学管工学院计算机系《数据结构与算法》实验报告/*-----------------全局变量---------------*/StackOPTR;/*定义运算符栈*/Stack2OPND;/*定义操作数栈*/charexpr[255]="";/*存放表达式串*/char*
5、ptr=expr;intInitStack(Stack*s)//构造运算符栈{s->base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));if(!s->base)returnERROR;s->top=s->base;s->stacksize=STACK_INIT_SIZE;returnOK;}intInitStack2(Stack2*s)//构造操作数栈{s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));if(!s->base)returnERROR;s->stacksize=
6、STACK_INIT_SIZE;s->top=s->base;returnOK;}intIn(charch)//判断字符是否是运算符,运算符即返回1{return(ch=='+'
7、
8、ch=='-'
9、
10、ch=='*'
11、
12、ch=='/'
13、
14、ch=='('
15、
16、ch==')'
17、
18、ch=='#');}intPush(Stack*s,charch)//运算符栈插入ch为新的栈顶元素{*s->top=ch;s->top++;return0;}intPush2(Stack2*s,intch)//操作数栈插入ch为新的栈顶元素{*s->top=ch;s->top++;return0;}c
19、harPop(Stack*s)//删除运算符栈s的栈顶元素,用p返回其值{charp;s->top--;p=*s->top;2013年3月19日7安徽财经大学管工学院计算机系《数据结构与算法》实验报告returnp;}intPop2(Stack2*s)//删除操作数栈s的栈顶元素,用p返回其值{intp;s->top--;p=*s->top;returnp;}charGetTop(Stacks)//用p返回运算符栈s的栈顶元素{charp=*(s.top-1);returnp;}intGetTop2(Stack2s)//用p返回操作数栈s
此文档下载收益归作者所有