数据结构实验六 堆栈实验_第1页
数据结构实验六 堆栈实验_第2页
数据结构实验六 堆栈实验_第3页
数据结构实验六 堆栈实验_第4页
全文预览已结束

付费下载

下载本文档

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

文档简介

实验题目实验六堆栈实验设计算法,把一个十进制整数转化为二进制数输出。问题分析本程序要求将一个十进制整数转化为二进制数输出。完成此功能所要解决的问题是熟练掌握和运用入栈和出栈操作,实现十进制整数转化为二进制数。数据的输入形式和输入值得范围:输入的是一个十进制整数,且其为正整数。结果的输出形式:输出的是一个二进制整数测试数据:1)92)4500概要设计1.为了实现上述程序功能,需要:构造一个空的顺序栈s将十进制整数除以2的余数入栈将余数按顺序出栈2.本程序包含7个函数:主函数main();顺序栈判栈空函数stackempty(seqstack*s)顺序栈置空栈函数seqstack*initstack(seqstack*s)顺序栈入栈函数push(seqstack*s,intx)顺序栈出栈函数pop(seqstack*s)顺序栈取栈顶元素函数gettop(seqstack*s)将十进制数转换为二进制数函数setnum(intnum)各函数间关系如下:initstackinitstack()——initstack(&s)stackemptystackempty()setnum()setnum()main()gettop()gettop()PushPush()ppop()详细设计1,顺序表的结构类型定义:typedefstruct{ intdata[maxlen]; inttop;}seqstack;2,顺序栈入栈函数的伪代码:voidpush(seqstack*s,intx){ if(s->top<=maxlen-1&&s->top>=-1){ s->top++; s->data[s->top]=x;} elseprintf("error");}3,顺序栈出栈函数的伪代码:voidpop(seqstack*s){ if(s->top>=0)s->top--; elseprintf("error");}4,将十进制数转换为二进制数函数伪代码:voidsetnum(intnum){ seqstacks; initstack(&s); while(num){intk=num%2; push(&s,k); num=num/2;} while(!stackempty(&s)){ intx=gettop(&s); printf("%d",x); pop(&s);}}五,源代码#include"stdio.h"#definemaxlen100typedefstruct{//定义顺序栈的结构类型 intdata[maxlen]; inttop;}seqstack;intstackempty(seqstack*s){//顺序栈判栈空算法 if(s->top>=0) return0; else return1;}seqstack*initstack(seqstack*s){//顺序栈置空栈算法 s->top=-1; returns;}voidpush(seqstack*s,intx){//顺序栈入栈算法 if(s->top<=maxlen-1&&s->top>=-1){ s->top++; s->data[s->top]=x; } elseprintf("error");}voidpop(seqstack*s){//顺序栈出栈算法 if(s->top>=0) s->top--; else printf("error");}intgettop(seqstack*s){//顺序栈取栈顶元素算法 if(s->top<=maxlen-1&&s->top>=0) return(s->data[s->top]); else printf("error");}voidsetnum(intnum){//将十进制数转换为二进制数函数 seqstacks;//定义一个顺序栈类型变量s initstack(&s);//置空栈s while(num){//进制转化 intk=num%2; push(&s,k); num=num/2; } while(!stackempty(&s)){//当栈不为空时 intx=gettop(&s);//取栈顶元素 printf("%d",x);//按序输出栈顶元素 pop(&s);//出栈 } printf("\n");}voidmain(){ intnum; printf("请输入一个十进制数:"); scanf("%d",&num); printf("该十进制数转换成的二进制数为:"); setnum(num);}六,调试分析在将十进制数转换为二进制数函数中,调用出栈函数pop时实参弄错,写成pop(s),应为pop(&s),因为定义是:pop(seqstack*s),调用时,不能将seqstack转换成seqstack*。

温馨提示

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

评论

0/150

提交评论