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;
}