📄 losertree.cpp
字号:
/************败方树source**********/
//利用MAX个顺串文件
//输入顺串放在1.txt到MAX.txt中,输出顺串放在0.txt中
#include"LoserTree.h"
#include<stdlib.h>
#include<cstring>
void loserTreeMultiMerge(){
//变量声明
Buffer bufferPool [MAX+1]; //开辟长度为MAX+1的缓冲池,bufferPool[0]用作输出buffer,其余的作输入buffer
node racer[MAX+1]; //选手
char fname [20]; //输入文件名数组
FILE * f [MAX+1]; //输入输出文件的句柄数组.
//输出文件句柄存放在为f[0], 输入文件句柄存放在f[1]到f[MAX]
LoserTree lt; //败方树
node read; //读出的数据置放在里面
//初始化输出文件
f[0] = fopen("0.txt", "w+");
//初始化输入缓冲区buffer[1..MAX]
for(int i = 1; i <= MAX; i++){
//初始化存放顺串的文件名,从1.txt到MAX.txt
_itoa(i, fname, 10);
strcat(fname, ".txt");
//初始化文件句柄数组
//句柄数组序号和文件名序号相对应,也和缓冲区号相对应
f[i] = fopen(fname, "r");
//往输入缓冲区置入数据
for(int j = 0; j < MAX_BUFFER; j++ ){
fscanf(f[i], "%d %s", &read.key,read.infor);
bufferPool[i].insert(read);
}//for
}//for
//初始化选手
for(int k = 1; k <= MAX; k++){
bufferPool[k].read(racer[k]);
}
//***调用多路归并算法,进行MAX路归并***//
multiMerge(lt, racer, bufferPool, f);
//关闭文件句柄
for(int n = 0; n <= MAX; n++){
fclose(f[n]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -