栈的实验报告_第1页
栈的实验报告_第2页
栈的实验报告_第3页
栈的实验报告_第4页
栈的实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

忻州师范学院计算机科学与技术系实验报告(第六组)组长:梁启超组员:晋丹丹张艳华马军刘雪梅孙钰林刘涛忻州师范学院计算机科学与技术系实验报告实验名称栈的应用专业班级计本1504班姓名梁启超学号指导教师成绩日期/11/17组员分工晋丹丹(Initstack)张艳华(Push)马军(Pop)刘雪梅(Top)孙钰林(conversion)刘涛(scan)一、实验目的本次课程设计的重要任务是完毕对数制转换进行编程,规定用栈实现十进制到二进制、八进制、十六进制的转换,理解转换进制的原理,纯熟对栈的基本操作,用栈的基本操作实现程序的效率化。二、实验内容用栈建立线性表,并进行线性表有关操作。规定:要有良好的人机界面,有菜单形式实现,含有输入、判断转化类型、转化数据、输出成果等。三、实验规定1.在问题分析的基础上选择适宜的存储构造,进行算法设计,编制程序并上机调试成功。2.按规定完毕实验报告。3.保存和打印出程序的运行成果,并结合程序进行分析。四、实验环节一、本演示程序用C编写,完毕栈的建立,及字符元素进栈与出栈操作1、输入的形式和输入值的范畴:2、输出的形式:a进制数转换中会输出十进制转换成的二进制、八进制十六进制数。输入一段字符后将返回判断成果;3、程序所能达成的功效:完毕栈的建成与元素进栈出栈的操作,输出进制数转换后的成果及回文判断的成果。4、测试数据:十进制转换成二、八、十六进制数操作中依次输入任意一种十进制整数返回它所但愿的成果。二、为了实现上述程序功效,需要定义单链表的抽象数据类型:Initstack(sqstack&s)操作成果:构造一种空的栈S.Push(sqstack&s,selemtypee)初始条件:栈S.已存在操作成果:插入元素e为新的栈顶元素。Pop(sqstack&s,selemtype&e)初始条件:栈S.已存在操作成果:删除S的栈顶元素并用e返回其值Top(sqstack&s,selemtypee)若栈不空,用e返回s的栈顶元素conversion(intN,intr)操作成果:进制转换各函数间关系以下:main()scan()InitstackPushPopTopconversion三、实现概要设计中定义的全部的数据类型,对每个操作给出伪码算法。对主程序和其它模块也都需要写出伪码算法。栈的定义typedefstruct{selemtype*base;selemtype*top;intstacksize;}sqstack;栈的生成、插入、删除、运算等操作statusInitstack(sqstack&s){s.base=(selemtype*)malloc(100*sizeof(selemtype));if(!s.base)exit(OVERFLOW);s.top=s.base;s.stacksize=100;returnOK;}statusPush(sqstack&s,selemtypee){if(!s.base)exit(OVERFLOW);*s.top++=e;returnOK;}statusPop(sqstack&s,selemtype&e){if(s.top==s.base)returnERROR;e=*--s.top;returne;}statusTop(sqstack&s,selemtypee){if(s.top==s.base)returnERROR;e=*(s.top-1);returnOK;}voidconversion(intN,intr){ sqstacks; selemtypee;Initstack(s);while(N){Push(s,N%r);N=N/r;} printf("转换后的成果是:");while(s.top!=s.base){Pop(s,e);printf("%d",e);}printf("\n");}.使用阐明与测试成果程序名为TXL.exe,运行环境为DOS。程序执行后显示(下图为参考截图例子。)第一次操作需选择1,2或3,并且只能选择一种。程序执行显示我们选择的操作是1,输入要转换的十进制数是10,成果是1010。我们选择的是继续1,这次选的是2,十进制转换八进制,输入的是10,成果是12。我们选择的是继续1,选的是3,十进制转换十六进制,输入10,输出10.五、实验总结(调试和运行程序过程中产生的问题及采用的方法;对算法的程序的讨论、分析,改善构想以及其它经验教训;对实验方式、组织、设备、题目的意见和建议等)附源程序清单:#include<stdio.h>#include<stdlib.h>typedefintselemtype;typedefintstatus;#defineOK1#defineOVERFLOW-1#defineERROR0typedefstruct{selemtype*base;selemtype*top;intstacksize;}sqstack;statusInitstack(sqstack&s){s.base=(selemtype*)malloc(100*sizeof(selemtype));if(!s.base)exit(OVERFLOW);s.top=s.base;s.stacksize=100;returnOK;}statusPush(sqstack&s,selemtypee){if(!s.base)exit(OVERFLOW);*s.top++=e;returnOK;}statusPop(sqstack&s,selemtype&e){if(s.top==s.base)returnERROR;e=*--s.top;returne;}statusTop(sqstack&s,selemtypee){if(s.top==s.base)returnERROR;e=*(s.top-1);returnOK;}voidconversion(intN,intr){ sqstacks; selemtypee;Initstack(s);while(N){Push(s,N%r);N=N/r;} printf("转换后的成果是:");while(s.top!=s.base){Pop(s,e);printf("%d",e);}printf("\n");}intscan(){intd;printf("◤栈的应用数制转换◢\n");printf("第6小组\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※数制转换※\n");printf("※1.十进制转二进制※\n");printf("※2.十进制转八进制※\n");printf("※3.十进制转十六进制※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("--------------------------------------------------\n");printf("请选择所要进行的操作:");scanf("%d",&d);return(d);}voidmain(){intn,i;switch(scan()){case1:printf("输入转换的数:");scanf("%d",&n);conversion(n,2);break;case2:printf("输入转换的数:");scanf("%d",&n);conversion(n,8);break;case3:printf("输入转换的数:");scanf("%d",&n);conversion(n,16);break;}printf("与否要继续?继续选择1,退出选择0!\n");scan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论