2015广工数据结构实验报告堆设计.doc

2015广工数据结构实验报告堆设计.doc

ID:57678441

大小:33.50 KB

页数:14页

时间:2020-08-31

2015广工数据结构实验报告堆设计.doc_第1页
2015广工数据结构实验报告堆设计.doc_第2页
2015广工数据结构实验报告堆设计.doc_第3页
2015广工数据结构实验报告堆设计.doc_第4页
2015广工数据结构实验报告堆设计.doc_第5页
资源描述:

《2015广工数据结构实验报告堆设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1.题目采用顺序存储结构实现堆的筛选,建造,插入,删除,排序等操作。ADTHeap{基本操作:voidMakeHeap(Heap&H,RcdType*E,intn,intsize,inttag)操作结果:构造一个堆;Destroy(&H)初始条件:堆已存在。操作结果:销毁堆H。GetLength(H)初始条件:堆H已存在。操作结果:返回堆H中元素个数。Get(L,i,&e)初始条件:堆H已存在,1≤i≤LengthList(L)。操作结果:用e返回堆H中第i个元素的值。RemoveFirstHeap(H,e);初始条件:堆H已存在操

2、作结果:删除第一个节点insertHeap(H,e);初始条件:堆H已存在,1≤i≤LengthList(L)+1。操作结果:在H的第n个元素之后插入新的元素e,L的长度加1showRcd(H.rcd,H.n);初始条件:堆H已存在。操作结果:依次输出H的每个元素。}ADTHeap2.存储结构定义//引入系统头文件#include#include#include//定义一些常量#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#def

3、ineINFEASIBLE-1#defineOVERFLOW-2//定义一些状态类型typedefintStatus;//用作函数类型,用作函数结果状态typedefintElemType;typedefintKeyType;//定义一个记录类型typedefstruct{KeyTypekey;//关键字}RcdType;//定义一个记录类型的顺序表typedefstruct{RcdType*rcd;//rcd的0号单元闲置;intlength;intsize;inttag;//排序类型,1为升序,0为降序intincreament

4、;}RcdSqList;//定义堆的结构体类型typedefstruct{RcdType*rcd;//堆的基址,0号单元不使用intn;//堆长度intsize;//堆容量inttag;//大根对与小根堆的标志int(*prior)(KeyType,KeyType,int);//函数变量,用于关键字优先级比较}Heap;//堆类型2.算法设计/******************************这是一个比较关键字优先级的函数参数说明:a和b为需要比较的两个关键字tag为排序的标识,1为升序,2为降序*************

5、******************/Statusprior(KeyTypea,KeyTypeb,inttag){if(tag==1){return(a>b)?1:0;}elseif(tag==0){return(b>=a)?1:0;}else{return0;}}/********************************************初始化一个顺序表的函数参数说明:L为需要初始化的函数size为顺序表的长度tag为顺序表的排序类型******************************************

6、**/StatusinitSqList(RcdSqList&L,intsize,inttag){//将当前时间设置成随机函数的种子,所以每次产生的数都不一样srand((unsigned)time(NULL));L.length=0;L.tag=tag;L.size=size+11;L.rcd=(RcdType*)malloc((size+11)*sizeof(RcdType));if(L.rcd==NULL){return0;}else{for(inti=1;i<=size;i++){L.rcd[i].key=rand()%100

7、;L.length++;}}return1;}/********************************打印记录参数说明:rcd为需要打印的记录序列length为序列的长度********************************/voidshowRcd(RcdType*rcd,intlength){inti;for(i=1;i<=length;i++){printf("%d",rcd[i].key);}printf("");}/**********************************交换节点、参数说明

8、:H为需要交换节点的堆i和j为需要交换的两个节点位置**********************************/StatusswapHeapElem(Heap&H,inti,intj){RcdTypet;if(i<0

9、

10、j<

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

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

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