home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The C Users' Group Library 1994 August
/
wc-cdrom-cusersgrouplibrary-1994-08.iso
/
listings
/
v_11_05
/
1105051a
< prev
next >
Wrap
Text File
|
1993-03-03
|
2KB
|
89 lines
#include <iostream.h>
#include <stdlib.h>
#include "os.h"
#undef VERBOSE
extern unsigned int _stklen = 24576;
int
compare_ints(const void *a, const void *b)
{
return *(int *) a - *(int *) b;
}
const int NumInts = 1000;
const int NumReps = 1000;
int
main(int argc, char *argv[])
{
int i;
int *arr = new int[NumInts];
int seed;
OSTree<int> *tree;
for (int j = 0; j < NumReps; j++) {
tree = new OSTree<int>;
cout << "Repetition " << j << '\n';
switch (argc) {
case 1:
if (NumReps == 1)
randomize();
else
srand(seed = j);
break;
case 2:
srand(atoi(argv[1]));
break;
case 3:
cerr << "Usage: " << argv[0] << " [seed]\n";
exit(1);
}
for (i = 0; i < NumInts; i++) {
arr[i] = rand();
tree->Insert(arr[i]);
tree->CheckNodes();
#ifdef VERBOSE
tree->PrintNodes();
cout << '\n';
#endif
}
#ifdef VERBOSE
cout << '\n';
#endif
qsort(arr, NumInts, sizeof(int), compare_ints);
for (i = 0; i < NumInts; i++) {
int inx;
int j, k;
for (j = 0; j < NumInts - i; j++)
if (*tree->Select(j) != arr[j]) {
cout << "Problems, seed = " << seed << '\n';
}
inx = rand() % (NumInts - i);
tree->DeleteItem(arr[inx]);
tree->CheckNodes();
#ifdef VERBOSE
tree->PrintNodes();
#endif
for (j = inx; j < NumInts - 1; j++)
arr[j] = arr[j+1];
#ifdef VERBOSE
cout << *tree->Select(i) << ' ';
cout << '\n';
#endif
}
#ifdef VERBOSE
cout << '\n';
#endif
delete tree;
}
return 0;
}