?? losertree.cpp
字號:
/************敗方樹source**********/
//利用MAX個順串文件
//輸入順串放在1.txt到MAX.txt中,輸出順串放在0.txt中
#include "LoserTree.h"
void main(){
//變量聲明
Buffer<int> bufferPool [MAX+1]; //開辟長度為MAX+1的緩沖池,bufferPool[0]用作輸出buffer,其余的作輸入buffer
int racer[MAX+1]; //選手
char fname [20]; //輸入文件名數組
FILE * f [MAX+1]; //輸入輸出文件的句柄數組.
//輸出文件句柄存放在為f[0], 輸入文件句柄存放在f[1]到f[MAX]
LoserTree<int> lt; //敗方樹
int 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");
cout<<fname<<" ";
//初始化文件句柄數組
//句柄數組序號和文件名序號相對應,也和緩沖區號相對應
f[i] = fopen(fname, "r");
//往輸入緩沖區置入數據
cout<<"The initial data in the input buffer are: ";
for(int j = 0; j < MAX_BUFFER; j++ ){
fscanf(f[i], "%d ", &read);
bufferPool[i].insert(read);
cout<<read<<" ";
}//for
cout<<endl<<endl;
}//for
//初始化選手
cout<<"the initial racers are:"<<endl;
for(int k = 1; k <= MAX; k++){
bufferPool[k].read(racer[k]);
cout<<racer[k]<<" ";
}
cout<<endl;
//***調用多路歸并算法,進行MAX路歸并***//
multiMerge<int>(lt, racer, bufferPool, f);
//關閉文件句柄
for(int n = 0; n <= MAX; n++){
fclose(f[n]);
}
//統計輸出文件中的記錄數
//這個沒有太大用處,起檢查作用
int a;
int x = 0;
FILE * ff;
ff = fopen("0.txt", "r");
while(!feof(ff)){
fscanf(ff, "%d ", &a);
x++;
}//while
cout<<"the all number is:";
cout<<x<<endl;
/*
//測試用例
LoserTree<int> lt; //敗方樹
int winner; //最終勝者索引
int racer[MAX+1]; //選手
//初始化選手
cout<<"the initial racers are:"<<endl;
racer[1] = 33;
racer[2] = 28;
racer[3] = 17;
racer[4] = 11;
racer[5] = 30;
//racer[6] = 11;
//racer[7] = 161;
//racer[8] = 63;
//racer[9] = 28;
//racer[10] = 2;
//初始化敗方樹
lt.Initialize(racer, MAX, Winner<int>, Loser<int>);
//取得最終勝者索引
winner = lt.Winner();
*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -