《数据结构》后缀表达式实验报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 5 琼州学院实验报告 课程名称 数据结构 实验项目名称 用顺序栈/链栈解决堆栈问题 实验项目序号 2 实验类型 设计性 实验地点 6607 专业班级 09数媒 实验日期 2011/3/24 指导教师签名 姓名 牛泽杰 学号成绩评定 一、实验目的 1、掌握接口、范型的定义及使用方法; 2、掌握堆栈的定义及实现方法; 3、运用堆栈解决问题。 二、实验内容及要求(选作1题) 实验内容1:一列货运列车共有n节车厢,重新排列车厢,使各车厢从前至后按编号1到n的次序排列。我们在一个转轨站里完成车厢的重排工作,在转轨站中有一个入轨、一个出轨和k个缓冲铁轨(位于入轨和出轨之间)。图3.1a 有k= 3个缓冲铁轨H1,H2和H3。开始时,n节车厢的货车从入轨处进入转轨站,转轨结束时各车厢从右到左按照编号1至编号n的次序离开转轨站。 根据上面的描述,编写程序实现下面的功能: 1)编写一算法实现火车车箱的重排; 2)编写程序模拟具有9节车厢的火车入轨和出轨的过程。 实验内容2:后缀表达式就是把运算符置于操作数之后的表示法。编写程序实现下面的功能: 1)编写算法计算后缀表达式的值; 2)显示后缀表达式的计算过程。 要求: 1)使用数组或链表以及C#接口和范型技术实现通用的堆栈功能; 2)利用1)实现堆栈,并完成相应功能。 三、实验设备环境 仪器:计算机; 实验环境:Microsoft Visual Studio 2008 四、实验原理 1、堆栈接口定义及说明; interface IStackT { void Push(T item); //入栈操作 将指定类型元素item进到栈中。 T Pop(); //出栈操作 将栈中的栈顶元素取出来,并在栈中删除栈顶元素。 T GetTop(); //取栈顶元素 将栈中的栈顶元素取出来,栈中的元素不变。 int GetLength(); //求栈的长度 获得栈的长度。 bool IsEmpty(); //判断栈是否为空 若栈为空,返回true,否则返回flase。 void Clear(); //清空操作 从栈中清除所有的数据元素。 } 2、范型顺序栈/链栈实现堆栈接口; 顺序栈(SeqStack)定义了三个字段:data,maxsize,top. private int maxsize; //顺序栈的容量 private T[] data; //数组,用于存储顺序栈中的数据元素 private int top; //指示顺序栈的栈顶 顺序栈(SeqStack)的存储结构用一维数组来表示。数组的元素使用泛型T,以实现不同数据类型的线性栈间代码的重用。用字段maxsize来表示顺序栈(SeqStack)的最大长度容量;设置一个变量top表示栈顶,top随着插入和删除而变化,top的范围是0到maxsize-1,如果顺序栈为空,top = -1。 3、主程序流程图。 开 始 开 始 初 初 始 化 Public SeqSetack (int size) 输 入 串string 输 入 串 string s1 =终止printf/P = 终止 printf / Pop a,b Pop a+b printf * Pop a,b Pop a+b printf - Pop a,b Pop a+b printf + Pop a,b Pop a+b printf 数 数 字 入栈 push 判断数字或操作符 判断数字或操作符 Switch case + - * / = 五、实验步骤及调试分析 1、定义接口IStack interface IStackT 2、定义一个可容纳100个元素的顺序栈SeqStack。 IStackdouble st = new SeqStackdouble(100); 3、输入一个字符串 Console.WriteLine(请输入一个字符串:); string s1 = Convert.ToString(Console.ReadLine()); 按F10的调试结果 4、输入数字12 default: double d1 = Convert.ToDouble(s1); st.Push(d1); Console.WriteLine(输出数据是{0}, d1); break; 经过判断实现入栈操作,将数字12 压入栈中。并进行判断顺序栈是否

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档