现在的位置: 主页 > 联系方式 > 文章列表

数据结构实践——败者树归并模拟

作者:程力专用汽车股份有限公司 来源:www.dfclxwc.com 未知发布时间:2017-09-07 12:50:32
数据结构实践——败者树归并模拟

【项目】败者树归并模拟
  编写程序,模拟改者树实现5路归并算法的过程。
  设有5个文件,其中的记录的关键字如下:
  F0:{17,21,∞} F1:{5,44,∞} F2:{10,12,∞}F3: {29,32,∞} F4: {15,56,∞}
  要求将其归并为一个有序段并输出。
  假设这些输入文件数据保存在内存中,输出结果也不必输出到文件,而是在屏幕上输出即可。

参考解答

#include #define MaxSize 20 //每个文件中最多记录 #define K 5 //5路平衡归并 #define MAXKEY 32767 //最大关键字值∞ #define MINKEY -32768 //最小关键字值-∞ typedef int InfoType; typedef int KeyType; typedef struct //记录类型 { KeyType key; //关键字项 InfoType otherinfo; //其他数据项,具体类型在主程中定义 } RecType; typedef struct { RecType recs[MaxSize]; int currec; } FileType; //文件类型 typedef int LoserTree[K]; //败者树是完全二叉树且不含叶子 RecType b[K]; //b中存放各段中取出的当前记录 FileType F[K]; //存放文件记录的数组 void initial() { int i; //5个初始文件,当前读记录号为-1 F[0].recs[0].key=17; F[0].recs[1].key=21; F[0].recs[2].key=MAXKEY; F[1].recs[0].key=5; F[1].recs[1].key=44; F[1].recs[2].key=MAXKEY; F[2].recs[0].key=10; F[2].recs[1].key=12; F[2].recs[2].key=MAXKEY; F[3].recs[0].key=29; F[3].recs[1].key=32; F[3].recs[2].key=MAXKEY; F[4].recs[0].key=15; F[4].recs[1].key=56; F[4].recs[2].key=MAXKEY; for (i=0;i0) { if(b[s].key>b[ls[t]].key) { i=s; s=ls[t]; //s指示新的胜者 ls[t]=i; } t=t/2; } ls[0]=s; } void display(LoserTree ls) //输出败者树 { int i; printf("败者树:"); for (i=0;i<k;i++) if="" (b[ls[i]].key="=MAXKEY)" printf("%d(∞)="" ",ls[i]);="" else="" printf("%d(-∞)="" printf("%d(%d)="" ",ls[i],b[ls[i]].key);="" printf("\n");="" }="" void="" createlosertree(losertree="" ls)="" 建立败者树="" {="" int="" i;="" b[k].key="MINKEY;" b[k]置为最小关键字="" for="" (i="0;i

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网页设计 https://www.feimao666.com

上一篇:会员网站的免费策略:形式免费核心高质 下一篇:最后一页