- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构董成成_第二次实验报告
湖北汽车工业学院实验报告
班 号 T1223-3 学 号 20120230309 姓 名 董成成
选课班中的序号 09 完成日期2014年4月28日7至8节
实验二 栈和队列基本操作的编程实现
一 、 实验目的
1.了解栈和队列的逻辑结构和存储结构的工作原理;
2.理解栈和队列的用途;
3.掌握栈和队列的程序设计;
二、实验要求
由于本次实验涉及到栈和队列两种数据结构的原理,实验题目将按照分级和分类的方式提供,任何学生都可以选择其中之一或多个综合来达成对原理的理解。细节由学生按照自己的能力随意拓展和提高,程序源码实现原创设计。
存储结构最简模式为:顺序存储,使用一维数组实现。鼓励使用链表结构,一般可以采用单链表结构。时间足够的情况下,希望把这些在课外全部自行编程实现。特别是希望和第一次实验采取相反的策略进行选择,以此来提高自己对于不同的存储结构的熟练运用。
界面设计最简模式为:无界面设计,极少提示。鼓励更加人性化的界面设计,提示清晰,操作过程流畅。如果启用文件,则可以采用全程无界面设计模式。
原始数据构建方式最简模式为:键盘输入。其他的方式也在鼓励之中:数据内置,计算机自动生成,文件读入。
数据类型最简模式为:整数。其他依次鼓励使用的为:实数、字符、英语字符串、汉字字符串。
实验内容
功能设计难度系数分为五级制:1:很容易,2:较容易,3:有一定难度,4:难度较大,5:难度很大。
栈功能演示系统。难度系数:2
汉字回文字符串的判断程序。难度系数:3
十进制正整数转换为八进制的程序。难度系数:4
环状队列功能演示系统。难度系数:2
十进制正小数转换为八进制的程序。难度系数:3
用计算机自动产生作业名、申请时间和打印时间的随机数据,然后用队列管理,随时显示队列中的数据和已经打印完毕的作业名。难度系数:4
开发语言最简模式为:C语言。以下依次为更加鼓励的设计环境:C++(不带对象),C++(带对象),C++带图形包(带对象),C++ windows mfc(带对象)。
知识分布界面的显示和控制、原始数据构建、全部数据遍历属于C语言。进栈和出栈、进队和出队等原理属于数据结构原理范畴。
重点实验内容图示
空环队 入队9次,出队4次 再入队3次,出队3次 再入队4次 这次实验,我做的是十进制正整数转换为八进制的程序,运用了栈。
把十进制转化为其他进制的方法,即辗转相除法。启用除法,把十进制数作为被除数,把要转化的进制数作为被除数,把余数记录下来,然后把商作为被除数,如此反复直到不能再除为止,所有余数就是结果,但是次序正好和希望的相反,所以必须设法产生逆序。启用栈后就可以得到正确的结果。
以下是辗转相除法的流程图:
但是在程序中有一点缺陷,即转化出来的在屏幕上显示的数字只是表面现象,只是由几个数字组合而成的。所以要把出栈后的多个数字转化成一个数字还需要进一步的讨论,这也算是本程序的一个不完善的地方。
栈作为数据结构,其主要的用途就是保存一批数据的逆序信息从而产生逆序的数据。栈的调用很好的运用了这一功能,后进后出的这一功能在这里得到了很好的运用。
主要的实现代码如下:
for(;;)
{
printf(\n***T1223-3-09 董成成 进制转换***:);
printf(\n请输入十进制数:);
scanf(%d,num);
for(;num!=0;){
remainder=num%8;
push(remainder);
num=num/8;
count++;
}
printf(\n转换成八进制后为:);
for(;count!=0;){
pop();
count--;
}
system(pause);
system(cls);
}
在这里,先输入一个十进制的数字,定义了一个int型的变量num来存储,定义了一个int型的变量remainder来存储num%8的余数。在for循环下,当num不等于0时,取num%8的余数赋值给remainder,将remainder进栈,取num=num/8,在num=0时结束循环。
在显示转换后的8进制时,只需要出栈就可以了。调用pop()函数:
int pop()//出栈
{
if (isempty()==0)
return 0;
printf(%d,stack[top]);
top--;
return 0;
}
在程序中,运用了一个int型的变量count来计数,判断栈内的元素个数;当数据进栈的时候,count++;出栈的时候,count--。
其中isempty()函数式用来判断栈是否为空,当count=0时,isempty()返回值
您可能关注的文档
最近下载
- 第三单元第1课《广而告之》课件-七年级美术下册(人教版2024).pptx VIP
- 2025【基于精准重心法的S家电企业物流配送中心选址和路线规划问题实证研究14000字】.docx
- 基于精确重心法的农产品冷藏仓库选址研究一以米易为例.docx
- (二模)2025届大湾区高三普通高中毕业年级联合模拟考试 (二)地理试卷(含答案详解).docx
- 半导体封装测试环评报告.pdf
- 双叉臂式悬架设计.docx
- 新生儿先天性肛门闭锁护理.pptx
- IEEE C57.149-2012国外国际标准.pdf
- (二模)2025届大湾区高三普通高中毕业年级联合模拟考试 (二)思想政治试卷(含答案).docx
- 先进半导体芯片封装测试项目环评环境影响报告表(新版环评).pdf
文档评论(0)