treebench.c
#include <stdio.h>
#include <string.h>
#include "searchtree.h"
#define D(X)
int cmp(void *d1, void *d2){
return strcmp((char*)d1, (char*)d2);
}
int dfree(void *d){
free(d);
return 0;
}
int kfree(void *k){
free(k);
return 0;
}
int main(int args, char *arg[]){
SearchTree *st;
char buf[100], *p;
long i,j,n, *np;
double iotime, alltime;
time_t tstart, tend;
st=createTree(cmp,kfree,dfree);
iotime = 0;
printf("starting program\n ");
fflush(stdout);
tstart = time(&tend);
i=n=0;
while(scanf("%s",buf)==1){
printf(".");
iotime += difftime(time(NULL),tend);
if(findNode(st,buf,(void**)&np)){
(*np)++;
}else{
p = (char*)malloc(strlen(buf)+1);
np = (long*)malloc(sizeof(long));
*np=1;
strcpy(p,buf);
insertNode(st, p, np);
i++;
}
time(&tend);
n++;
}
alltime = difftime(tend,tstart);
printf("\n%d words processed (%d inserted)\n", n, i);
printf("%f seconds (%f seconds - I/O time)\n", alltime, alltime-iotime);
deleteTree(st);
printf("program done.\n");
return 0;
}