- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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)