学号-姓名-c语言程序设计实训课程设计报告

学号-姓名-c语言程序设计实训课程设计报告

ID:35221025

大小:85.00 KB

页数:12页

时间:2019-03-22

学号-姓名-c语言程序设计实训课程设计报告_第1页
学号-姓名-c语言程序设计实训课程设计报告_第2页
学号-姓名-c语言程序设计实训课程设计报告_第3页
学号-姓名-c语言程序设计实训课程设计报告_第4页
学号-姓名-c语言程序设计实训课程设计报告_第5页
资源描述:

《学号-姓名-c语言程序设计实训课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

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

2、堆2)输出最大元素3)插入元素至大根堆4)输出大根堆数组5)输出大根堆(按行)6)销毁堆一、概要设计1.抽象数据类型定义ADTHeapSort{数据对象:D={ai

3、ai属于Elemset,i=1,2,3........,n,n=>0};数据关系:R1={ai=>a2i;ai=>a2i+1};基本操作:Init_Sq(&L)操作结果:新建一个堆InitSq(&L)初始条件:堆已存在操作结果:将输入整数插入到大根堆中HeapAdjust(SqList&L,ints)初始条件:堆已存在操作结果:把s调到堆中合适位

4、置HeapSort(&L)初始条件:堆已存在操作结果:无序数列调整为一个大顶堆DelMax(&L)初始条件:堆已存在操作结果:取出最大元素DeleteHeap(&L)操作结果:销毁堆PutList(L)初始条件:堆已存在操作结果:按行输出堆中元素Load_sq(L)初始条件:堆已存在操作结果:输出堆数组}ADTHeapSort一、详细设计#include#includetypedefstruct{int*key;intlength;}SqList;voidLoad_sq(

5、SqListL){//打印堆数组inti;if(L.length){printf("堆数组为:");for(i=1;i<=L.length;i++)printf("%d",L.key[i]);printf("");}elseprintf("堆为空!!");system("pause");system("cls");}voidPutList(SqListL){//按行打印堆inth=0,sum=0,item=1;inti,j,cnt=1,tmp=1;if(L.length){while(sum

6、length){sum+=item;h++;item*=2;}printf("------------------------");printf("堆中元素:");for(i=0;i

7、;system("cls");}voidHeapAdjust(SqList*L,ints){//调整堆intj;L->key[0]=L->key[s];for(j=2*s;j<=L->length;j*=2){if((jlength)&&(L->key[j]key[j+1]))j++;if(L->key[0]>=L->key[j])break;L->key[s]=L->key[j];s=j;}L->key[s]=L->key[0];}voidHeapSort(SqList*L){//建立大顶堆

8、inti;for(i=L->length/2;i>0;i--)HeapAdjust(L,i);}intInit_Sq(SqList*L){//新建堆inti;printf("请输入初始堆的长度:");scanf("%d",&L->length);L->key=(int*)malloc((L->length+1)*sizeof(int));if(!L->key)exit(1);printf("请输入初始堆的各个元素:");for(i=1;i<=L->length;i++)scanf("%d",&L->key

9、[i]);HeapSort(L);printf("新建堆成功!");system("pause");system("cls");return1;}voidInitSq(SqList*L){//插入元素inta,i,*newkey;intlen=L->length+1;printf("请输入插入元素个数:");scanf("%d",&a);L->length+=a;newkey=(int*)rea

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。