ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:83.75KB ,
资源ID:1729671      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1729671.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验二堆栈实验报告教材.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验二堆栈实验报告教材.docx

1、实验二堆栈实验报告教材 计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 课程名称 数据结构与算法 项目名称 实验二堆栈实验 班 级 1 学 号 姓 名 同组人员 无 实验日期 实验二 堆栈实验实验题目 1:将十进制正整数转换成十六进制的算法1.问题分析本程序要求实现将十进制正整数转换成十六进制的算法。完成该实验需要以下3个子任务:首先定义一个顺序栈SeqStack的类型,再写出栈的基本算法的函数。用dectohex()函数实现将十进制化为16进制的数入栈;在主函数完成数据的输出和出栈。测试数据设计如下:2448991001012.概要设计1)为了实现上述程序功能,需要:定义一个

2、顺序栈SeqStack 的类型定义栈的基本算法调用函数dectohex把十进制转换为16进制存入s中在主函数中完成16进制的输出2)本程序包含7个函数:1.主函数main()2.置空栈InitStack()3.判栈空StackEmpty()4.取栈顶函数GetTop()5.入栈Push()6.出栈Pop()7.dectohex() 各函数关系如下: InitStack、 StackEmptymain GetTop Push Pop dectohex3、详细设计实现概要设计中定义的所有的数据类型,对每个操作给出了算法和代码,主程序和模块都需要代码。(1)顺序栈 #define maxlen 10

3、0typedef struct int datamaxlen; int top;SeqStack; (2) 栈的基本算法SeqStack *InitStack(SeqStack *s) /建立一个空栈 s-top=-1; return s;int StackEmpty(SeqStack *s) /判断栈是否为空 if(s-top=0) return 0; else return 1;int GetTop(SeqStack *s) /取栈顶元素 if(s-toptop=0 ) return (s-datas-top); else printf(effor);void Push (SeqStack

4、 *s,int x) /入栈 if(s-toptop=-1) s-top+;s-datas-top=x; else printf(effor);void Pop (SeqStack *s) /出栈 if(s-top=0) s-top-; else printf(effor);(3)用dectohex()函数实现将十进制化为16进制的数入栈void dectohex(long num) /将十进制转换成十六进制 InitStack(&s); while(num) int k=num%16; Push(&s,k); num=num/16; (4)在主函数完成数据的十六进制输出和出栈。int mai

5、n() long num; scanf(%ld,&num); dectohex(num); while(!StackEmpty(&s) /以十六进制输出 int x=GetTop(&s); if(x10) printf(%d,x); else switch (x) case 10:printf(A);break; case 11:printf(B);break; case 12:printf(C);break; case 13:printf(D);break; case 14:printf(E);break; case 15:printf(F);break; Pop(&s); printf(n

6、); return 0;4、调试分析 编译时在主函数定义了SeqStack s,在dectohex()里也有这个语句,十进制转十六进制时是储存在形参的栈里面,执行之后,并没有传递给实参,导致输出为空。解决办法把s定义为全局变量,或者在dectohex()函数多声明个形参。本程序使用的是把s定义为全局变量。5、用户使用说明 程序名为class1.exe,在DEBUG文件夹里面。运行环境Visual c+ 6.0。6、测试结果7、附录#include #define maxlen 100typedef struct /顺序栈的定义 int datamaxlen; int top;SeqStack;

7、SeqStack s;SeqStack *InitStack(SeqStack *s) /建立一个空栈 s-top=-1; return s;int StackEmpty(SeqStack *s) /判断栈是否为空 if(s-top=0) return 0; else return 1;int GetTop(SeqStack *s) /取栈顶元素 if(s-toptop=0 ) return (s-datas-top); else printf(effor);void Push (SeqStack *s,int x) /入栈 if(s-toptop=-1) s-top+;s-datas-top

8、=x; else printf(effor);void Pop (SeqStack *s) /出栈 if(s-top=0) s-top-; else printf(effor);void dectohex(long num) /将十进制转换成十六进制 InitStack(&s); while(num) int k=num%16; Push(&s,k); num=num/16; int main() long num; scanf(%ld,&num); dectohex(num); while(!StackEmpty(&s) /以十六进制输出 int x=GetTop(&s); if(xtop=

9、-1; return s;int StackEmpty(SeqStack *s) /判断栈是否为空 if(s-top=0) return 0; else return 1;int StackFull(SeqStack s) /判断栈是否为满 if(s.top = maxlen-1) return 1; else return 0;int GetTop(SeqStack *s) /取栈顶元素 if(s-toptop=0 ) return (s-datas-top); else printf(effor);void Push (SeqStack *s,int x) /入栈 if(s-toptop=

10、-1) s-top+;s-datas-top=x; else printf(effor);void Pop (SeqStack *s) /出栈 if(s-top=0) s-top-; else printf(effor);(3)用compare()函数判断字符串是否有中心对称关系int compare(char s1) SeqStack s; int i,len; InitStack(&s); len = strlen(s1); for(i=0;ilen/2;i+) Push(&s,s1i); for(i=(len+1)/2;ilen;i+) if(s1i != GetTop(&s) return 0; else Pop(&s); return 1;(4)在主函数完成判断结果的输出void main() char s120; printf(请输入一个回文串:n); gets(s1); printf(判断结果:n); if(co

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1