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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

学号姓名C语言程序设计实训课程设计报告.docx

1、学号姓名C语言程序设计实训课程设计报告齐鲁工业大学信息学院数据结构课程设计报告题目:图书管理系统专业班级:计科(外包)15-2学号:1063 姓名:杨朔蓬 时间:一、 需求分析1. 本演示程序中,堆中元素为整数,堆的大小无限制,堆的输入方式与整型数组输入相同,本程序主要是利用堆排序原理进行设计,实现对输入数据的排序和最大元的输出。2. 演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运行命令;相应的输入数据和运算结果显示在其后。3. 程序执行命令包括:1) 新建大根堆2) 输出最大元素3) 插入元素至大根堆4) 输出大根堆数组5)

2、输出大根堆(按行)6) 销毁堆二、 概要设计1. 抽象数据类型定义ADT HeapSort 数据对象: D=ai|ai属于Elemset,i = 1,2,3.,n,n=0; 数据关系:R1= ai= a2i;ai= a2i+1 ; 基本操作: Init_Sq(&L)操作结果:新建一个堆InitSq(&L)初始条件:堆已存在 操作结果:将输入整数插入到大根堆中 HeapAdjust(SqList &L,int s)初始条件:堆已存在操作结果:把s调到堆中合适位置HeapSort(&L)初始条件:堆已存在 操作结果:无序数列调整为一个大顶堆DelMax(&L)初始条件:堆已存在操作结果:取出最大元

3、素DeleteHeap(&L)操作结果:销毁堆PutList(L)初始条件:堆已存在 操作结果:按行输出堆中元素Load_sq(L)初始条件:堆已存在 操作结果:输出堆数组ADT HeapSort 三、 详细设计#include #include typedef struct int *key; int length; SqList;void Load_sq(SqList L) /打印堆数组 int i; if(L.length) printf(堆数组为n: ); for(i=1; i=L.length; i+) printf(%d ,L.keyi); printf(n); else prin

4、tf(堆为空!n); system(pause); system(cls);void PutList(SqList L)/ 按行打印堆 int h=0,sum=0,item=1; int i,j,cnt=1,tmp=1; if(L.length) while(sumL.length) sum+=item; h+; item*=2; printf(n-n); printf(堆中元素:n); for(i=0;ih;i+) printf(第%d行元素 ,i+1); for(j=0;jtmp&cntkey0=L-keys; for(j=2*s; jlength; j*=2) if(jlength) &

5、 (L-keyjkeyj+1) j+; if(L-key0=L-keyj) break; L-keys=L-keyj; s=j; L-keys=L-key0;void HeapSort(SqList* L)/建立大顶堆 int i; for(i=L-length/2; i0; i-) HeapAdjust(L,i);int Init_Sq(SqList *L) /新建堆 int i; printf(请输入初始堆的长度: ); scanf(%d,&L-length); L-key=(int *)malloc(L-length+1)*sizeof(int); if(!L-key) exit(1);

6、 printf(请输入初始堆的各个元素n: ); for(i=1; ilength; i+) scanf(%d,&L-keyi); HeapSort(L); printf(新建堆成功!n); system(pause); system(cls); return 1;void InitSq(SqList *L) /插入元素 int a,i,*newkey; int len=L-length+1; printf(请输入插入元素个数: ); scanf(%d,&a); L-length+=a; newkey=(int *)realloc(L-key,(L-length+1)*sizeof(int);

7、 if(!newkey) exit(2); L-key=newkey; printf(请输入初始堆的各个元素n: ); for(i=len; ilength; i+) scanf(%d,&L-keyi); HeapSort(L); printf(插入元素成功!n); system(pause); system(cls);void DelMax(SqList *L) /删除最大元 if(L-length) printf(最大元素为: %dn,L-key1); L-key1=L-keyL-length; L-length-; HeapAdjust(L,1); else printf(堆为空!n);

8、 system(pause); system(cls);int DeleteHeap(SqList *L) if(L-length) free(L-key); L-length=0; L=NULL; printf(销毁完成!n); system(pause); system(cls); return 1; else printf(已为空,无需销毁!n); system(pause); system(cls); return 0; void menu() printf( *n); printf( # 1、新建大根堆 #n); printf( # 2、输出最大元素 #n); printf( # 3

9、、插入元素至大根堆 #n); printf( # 4、输出大根堆数组 #n); printf( # 5、输出大根堆(按行) #n); printf( # 6、销毁堆 #n); printf( # 7、退出 #n); printf( *n); printf(请选择n: );void menu_2() printf(*n); printf(* 1、从堆中删除后输出*n); printf(* 2、直接输出 *n); printf(*n); printf(请选择n: );int main() int i,j; SqList L; L.length=0; while(1) menu(); scanf(%

10、d,&i); switch(i) case 1: Init_Sq(&L); break; case 2: menu_2(); scanf(%d,&j); if(j=1) DelMax(&L); else if(j=2) if(L.length) printf(最大元素为: %dn,L.key1); else printf(堆为空!n); system(pause); system(cls); break; case 3: InitSq(&L); break; case 4: Load_sq(L); break; case 5: PutList(L); break; case 6: Delete

11、Heap(&L); break; case 7: return 0; default : printf(无此项!n); system(pause); system(cls); 函数调用关系:MainMenumenu_2Init_SqInitSqDelMaxLoad_sqPutList DeleteHeapHeapSortHeapAdjustSqList四、 调试分析在编程过程中遇到很多问题,比如函数之间参数的传递,刚开始总搞不清楚应该传递什么样的参数,还有在设计堆的筛选中,总是搞不清楚应该怎样筛选,后来经过查阅资料解决了这些问题,程序顺利执行。执行过程中发现了一些bug,比如在堆为空时执行输出

12、程序会崩溃,这些bug已经顺利解决了。五、 用户手册1. 本程序运行环境为dos操作系统,执行文件为Heap.exe。2. 进入演示程序即显示文本方式的用户界面:3. 选择相应的选项即可进行操作。六、 测试结果执行命令1:执行命令2:执行命令3:执行命令4:执行命令5:执行命令6:执行命令7:退出七、 附录源程序文件名Heap.c /主程序八、 总结与心得在本次程序设计中,运用了堆排序的基本原理,在编程的过程中,首先要了解大顶堆的定义,以及如何利用堆排序的原理进行排序,合理的设计筛选模块,先从主函数开始,正确使用特殊语句,以及关键字,在这过程要用到for、while、switch循环语句,最重要的就是要写出正确的判断语句,搞清楚程序的结

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

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