1、课 程 实 验 报 告专 业 年 级 计算机科学与技术 课 程 名 称 编 译 原 理 指 导 教 师 学 生 姓 名 学 号 实 验 日 期 实 验 地 点 实 验 成 绩 教务处制2010 年 月 日实验报告专业班级 姓名 学号课程名称 编译原理 实验名称 一个顺序栈的基本运算实验实验编号 实验一 实验形式 设计性实验类型 认识与验证型 实验学时 2 学时实验目的1了解掌握栈的相关知识。2学习并使用栈,并能建立栈。实验要求1. 建立一个字符栈。2. 所建栈有进栈、出栈、初始化栈、判断栈空、判断栈满、清栈和取栈顶元素这几个函数。实验内容建立一个字符栈,并有相应的配套函数。把字符串 uwdwe
2、oqei#入栈并输出。实验步骤 #define wyo chartypedef structwyo data50;int top;stack;void InitStack(stack *s)/栈初始化s-top=-1;int StackEmpty(stack *s)/判栈空,空为if(s-top=-1)return 1;elsereturn 0;int StackFull(stack *s)/判栈满,满为if(s-top=50)return 1;elsereturn 0;void ClearStack(stack *s)/清栈s-top=-1;void Push(stack *s,wyo e)
3、/入栈if(!StackFull(s)s-data+s-top=e;elsecoutdatas-top-;elsecoutdatas-top;elsecouty;Push(coutBD,D-FD,D-,F-+B,F-B,B-CE,E-GE,E- ,G*C,G-/C,C-(A),C-i分别验证字符串 i+(i-i*i)/i-i 和 i+(i-i*i)/ii 是否合法.实验步骤 #define wyo chartypedef structwyo data50;int top;stack;void InitStack(stack *s)/栈初始化s-top=-1;int StackEmpty(sta
4、ck *s)/判栈空,空为if(s-top=-1)return 1;elsereturn 0;int StackFull(stack *s)/判栈满,满为if(s-top=50)return 1;elsereturn 0;void ClearStack(stack *s)/清栈s-top=-1;void Push(stack *s,wyo e)/入栈if(!StackFull(s)s-data+s-top=e;elsecoutdatas-top-;elsecoutdatas-top;elsecout=0Push(while(StackEmpty(yan(z); 实验结果与分析教师评语成绩评定:
5、 指导教师签名:实验报告专业班级 姓名 学号课程名称 编译原理 实验名称 中缀表达式转换为后缀表达式实验编号 实验三 实验形式 设计性实验类型 认识与验证型 实验学时 2 学时实验目的1掌握并了解什么是中缀表达式,什么是后缀表达式。2学会如何把中缀表达式转换为后缀表达式。实验要求在实验一的基础上,设计一个函数,此函数的功能是把中缀表达式转换为后缀表达式。实验内容输入字符串 k+k-k+(k*k+k-k)/k-k,输出这个字符串的后缀表达式。实验步骤 #define wyo charchar M50;int m(0);typedef structwyo data50;int top;stack;
6、void InitStack(stack *s)/栈初始化s-top=-1;int StackEmpty(stack *s)/判栈空,空为if(s-top=-1)return 1;elsereturn 0;int StackFull(stack *s)/判栈满,满为if(s-top=50)return 1;elsereturn 0;void ClearStack(stack *s)/清栈s-top=-1;void Push(stack *s,wyo e)/入栈if(!StackFull(s)s-data+s-top=e;elsecoutdatas-top-;elsecoutdatas-top;
7、elsecoutz;Push(while(StackEmpty(while(Seqtop(continue;if(you(Seqtop(continue;if(you(Seqtop(while(you(Seqtop(Pop(continue;if(you(Seqtop(elsewhile(you(Seqtop(int m(0);typedef structwyo data50;int top;stack;void InitStack(stack *s)/栈初始化s-top=-1;int StackEmpty(stack *s)/判栈空,空为if(s-top=-1)return 1;elsere
8、turn 0;int StackFull(stack *s)/判栈满,满为if(s-top=50)return 1;elsereturn 0;void ClearStack(stack *s)/清栈s-top=-1;void Push(stack *s,wyo e)/入栈if(!StackFull(s)s-data+s-top=e;elsecoutdatas-top-;elsecoutdatas-top;elsecout=0elseswitch(Mi)case +:x=ans-n;y=ans-n;ansn+=y+x;break;case -:x=ans-n;y=ans-n;ansn+=y-x;
9、break;case *:x=ans-n;y=ans-n;ansn+=y*x;break;case /:x=ans-n;y=ans-n;ansn+=y/x;break;coutz;Push(while(StackEmpty(if(yan(y)=1)while(Seqtop(continue;if(you(Seqtop(continue;if(you(Seqtop(while(you(Seqtop(Pop(continue;if(you(Seqtop(elsewhile(you(Seqtop(if(StackEmpty(Push(continue;while(StackEmpty(cout“后缀表达式为:“;for(int i=0;i=m;i+)/输出后缀表达式coutMi;coutendl;jisuan();void main()li(); 实验结果与分析教师评语成绩评定: 指导教师签名: