栈的应用分析和总结.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

甘肃政法学院

本科生实验报告

(一)

姓名:马大哈

学院:计算机科学学院专业:计算机科学与技术

班级:2011级计算机科学与技术本科班

实验课程名称:数据结构

实验日期:2012年10月10 日指导教师及职称:陆军老师

实验成绩:

开课时间:2012-2013学年第一学期

甘肃政法学院实验管理中心印制

实验题目姓名

十进制转二进制马大哈 班级

小组合作 无

2011 级计 学 号 201181110100

一、实验目的学习栈的用法

二.实验环境

MicrosoftVisualC++6.0

三、实验内容与步骤

由于栈结构具有后进先出的固有特性,致使栈成为程序设计中的有用工具。

十进制数N和其他d进制数的转换是计算机实现计算的基本问题,其解决方法多,其中一个简单算法基于下列原理:

N=(Ndivd)*d+Nmodd(其中:div为整除运算,mod为求余

运算)

假设现要编制一个满足下列要求的程序:对于输入的任意一个非负十进制数,打印输出与其等值的二进制数。由于计算过程是从低位到高位顺序产生二进制数的个数位,而打印输出,一般来说应从高位到低位进行,恰好和计算机过程相反。因此,若将计算过程得到的二进制的各位顺序进栈,则按出栈序列打印输出的即为与输入对应的二

进制数。具体代码如下:

typedefintSElemType;/*定义栈元素类型为整型*/#includec1.h

#includec3-1.h/*采用顺序栈*/

#includebo3-1.c/*利用顺序栈的基本操作*/

voidconversion()

{/*对于输入的任意一个非负10进制整数,打印输出与其等值的2进制数 */

SqStacks;

unsignedn;/*非负整数*/SElemTypee;

InitStack(s);/*初始化栈*/

printf(十进制转二进制:\n请输入要转换的十进制数:);scanf(%u,n);/*输入非负十进制整数n*/

while(n)/*当n不等于0*/

{

Push(s,n%2);/*入栈n除以2的余数(2进制的低位)*/n=n/2;

}

while(!StackEmpty(s))/*当栈不空*/

{

Pop(s,e);/*弹出栈顶元素且赋值给e*/if(e=9)

printf(%d,e);else

printf(%c,e+55);

}

printf(\n);

}

voidmain()

{

conversion();

}

四、实验过程与分析

本实验是利用栈的后进先出的特性最简单的例子,在这个实验中,栈操作的序列是直线式的,即一味地入栈,然后一味地出栈。可以看出栈的引入简化了程序设计的问题,划分了不同的关注层次,是思考范围缩小了。倘若用数组,那就遮掩了问题的本质,还要分散精力去思考数组下标增减等细节问题。

首先申请一个栈,将栈初始化,设置一个变量用来接收输入的数,在进行二进制转换,并将转换后的数依次进栈,最后依次出栈,打印输出。

本实验的实验结果如下:

本实验的实验结果如下:

五、实验总结

在实验中,应注意头文件的加入,本实验共有三个头文件如下:

#includec1.h#includec3-1.h#includebo3-1.c

在所给出的文件中缺少#includec1.h,所以应特别注意。

文档评论(0)

hao187 + 关注
官方认证
内容提供者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档