|
新たに、プログラムを作成してみましたが、
ぜんぜん、出来なく、余計こんがらがってしまいました。
御教授お願い致します。
/*新たに作成した出力ソース*/
/*ハッシュ表の中身を出力*/
void PrintAllData(void)
{
Data *s;
int i;
int table[TableSize]; /*追加*/
for(i=0; i<TableSize; i++)
table[i]=0;
for(i=0; i<HashSize; i++){
Data *s=hashtable[i];
int n=0;
if(s!=NULL){
for(; s!=NULL; s=s->next)
n++;
}
if(n<TableSize){
table[n]++;
}
else{
fprintf(stderr, "エラー%d\n", n);
}
}
for(i=0; i<TableSize; i++){
if(!(i%8))
putchar('\n');
printf("%d:%d", i, table[i]);
}
}
/*前の出力ソース*/
/*ハッシュ表の中身を出力*/
void PrintAllData(void)
{
Data *s;
FILE *datafp;
FILE *fp;
int i;
datafp=fopen("g.txt", "w"); /*全データ&衝突回数を新規ファイルに出力 <<ファイル名を変更する>> */
fp=fopen("h.xls", "w"); /*衝突回数を新規ファイルに出力 <<ファイル名を変更する>> */
for(i=0; i<HashSize; i++){
printf("[%d]\t", i);
s=hashtable[i];
while(s){
printf("%-16s:%d回衝突\t->", s->name, s->collision);
fprintf(datafp, "[%d]%-16s:%d回衝突\t->", i, s->name, s->collision);
fprintf(fp, "%d->", s->datasum); /*fprintf(fp, "[%d]%d回衝突(データ数%d) ->", i, s->collision, s->datasum);*/
s=s->next;
}
printf("NULL\n");
fprintf(datafp, "[%d]NULL\n", i);
fprintf(fp, "\n");
}
fclose(datafp);
fclose(fp);
}
|