#include #include #include "jrb.h" #include "dllist.h" #include "fields.h" #define NFN 65 static char *fns[NFN] = { "Adam", "Andrei", "Anika", "Barbara", "Bill", "Blanche", "Brad", "Buddy", "Carla", "Catherine", "Charlie", "Chemique", "Cindy", "Dave", "Dizzy", "Eden", "Elena", "Elizabeth", "Ellen", "Emily", "Glenn", "Helen", "Jamal", "Jamie", "Jane", "Jay", "Jean", "Jeff", "Jennifer", "Jian", "Jim", "John", "Katie", "Kevin", "Kitty", "Kyra", "LaShonda", "Lazar", "Leonard", "Mark", "Mary", "Miles", "Mingo", "Misty", "Molly", "Pat", "Peg", "Peyton", "Phil", "Priest", "Raynoch", "Rob", "Semeka", "Sergei", "Shira", "Suzy", "Sviatoslav", "Tamika", "Terry", "Thor", "Tom", "Wallace", "Wanda", "Wendy", "Xavier" }; main(argc, argv) int argc; char **argv; { int nevents; int seed; int NLN; int i; char **lns; IS is; JRB t, tmp; char *s, nam[100]; int r; Dllist dl, dtmp; if (argc != 4) { fprintf(stderr, "usage: inputgen nevents seed lnfile\n"); exit(1); } nevents = atoi(argv[1]); seed = atoi(argv[2]); srandom(seed); is = new_inputstruct(argv[3]); if (is == NULL) { perror(argv[3]); exit(1); } dl = new_dllist(); NLN = 0; while (get_line(is) == 1) { dll_append(dl, new_jval_s(strdup(is->fields[0]))); NLN++; } lns = (char **) malloc(sizeof(char *)*NLN); for (i = 0; i < NLN; i++) { dtmp = dll_first(dl); lns[i] = dtmp->val.s; dll_delete_node(dtmp); } free_dllist(dl); t = make_jrb(); for (i = 0; i < nevents; i++) { if (i < 50 || random()%11 < 5) { strcpy(nam, fns[random()%NFN]); strcat(nam, " "); strcat(nam, lns[random()%NLN]); s = (char *) strdup(nam); r = random(); jrb_insert_int(t, r, new_jval_s(s)); printf("ADD %s %d %03d-%02d-%04d\n", s, random()%100, random()%1000, random()%100, random()%10000); } else if (random()%6 == 0 && i != nevents -1) { printf("PRINT\n"); } else { if (!jrb_empty(t)) { tmp = jrb_first(t); s = tmp->val.s; jrb_delete_node(tmp); printf("DELETE %s\n", s); free(s); } } } printf("PRINT\n"); printf("DONE\n"); }