Esempio n. 1
0
void DeleteTrieNode(TrieNode * todelete)
{
	BinaryTreeEnum * btenum;
	TrieNode * curchild;

	btenum=BT_newenum(todelete->children);
	while(curchild=(TrieNode *)BT_next(btenum))
		DeleteTrieNode(curchild);

	BT_delete(todelete->children);

	clean(todelete);

	return;
}
Esempio n. 2
0
File: btree.c Progetto: qd-cae/qd
main()
{
int pool[POOLSIZE];
int pool2[POOLSIZE];
int i,j,k,n,loop,outer;
void *btree = BT_new(mycomp);
struct timeval start,stop;
double d;

for(outer=0; 1 ; outer++) {
  for(i=0; i<POOLSIZE; i++) {
    pool[i]=i;
  }

  for(i=0; i<MIX; i++) {
    j= rand()%POOLSIZE;
    k= rand()%POOLSIZE;
    n = pool[j];
    pool[j] = pool[k];
    pool[k] = n;
  }
  printf("TREE %d\n",outer);

  gettimeofday(&start,NULL);
  for(i=0; i<POOLSIZE; i++) {
    BT_store(btree,pool+i);
  }
  gettimeofday(&stop,NULL);
  d = (double)(stop.tv_sec-start.tv_sec)+(double)(stop.tv_usec-start.tv_usec)/1000000.;
  printf("%d elements added in %lf seconds\n",BT_numentries(btree),d);
  printf("  = %lf per second\n",(double)BT_numentries(btree)/d);
  BT_verify(btree);
  printf("deleting/adding %d elements\n",POOL2SIZE);
/*
  Put together a list of nodes to delete, then add back in
*/
  for(i=0; i<POOLSIZE; i++) {
    pool2[i]=i;
  }

  for(loop = 0; loop < LOOP2; loop++) {
    printf("*"); fflush(stdout);
    for(i=0; i<MIX; i++) {
      j= rand()%POOL2SIZE;
      k= rand()%POOLSIZE;
      n = pool2[j];
      pool2[j] = pool2[k];
      pool2[k] = n;
    }
    gettimeofday(&start,NULL);
    for(i=0; i<POOL2SIZE; i++) {
       BT_delete(btree,pool+pool2[i]);
    }
    gettimeofday(&stop,NULL);
  d = (double)(stop.tv_sec-start.tv_sec)+(double)(stop.tv_usec-start.tv_usec)/1000000.;
  printf("%d elements deleted in %lf seconds\n",POOL2SIZE,d);
  printf("  = %lf per second\n",(double)POOL2SIZE/d);
    if(BT_verify(btree) == -1) exit(0);
    gettimeofday(&start,NULL);
    for(i=0; i<POOL2SIZE; i++) {
       BT_store(btree,pool+pool2[i]);
    }
    gettimeofday(&stop,NULL);
  d = (double)(stop.tv_sec-start.tv_sec)+(double)(stop.tv_usec-start.tv_usec)/1000000.;
  printf("%d elements restored in %lf seconds\n",POOL2SIZE,d);
  printf("  = %lf per second\n",(double)POOL2SIZE/d);
    if(BT_verify(btree) == -1) exit(0);
  }
  printf(" %d\n",BT_numentries(btree));
  BT_flush(btree);
}
printf("The tree holds %d entries\n",BT_numentries(btree));
}