int main(void) { /* Declare YOUR variables here ! */ Slist mylist; int menu_choice; /* Seed to random generator and clear the screen.. */ srand((unsigned int)time(NULL)); if ((mylist = SLISTinit(my_destroy)) == NULL) { printf("\nFatal error... - bailing out!"); SLISTdestroy(mylist); exit(-1); } /* Set match-callback into list structure.. */ SLISTsetmatch(mylist, my_match); /* Populate the (empty) list.. */ create_random_nodes(mylist, NR_OF_ITEMS); /* Enter menu loop... */ do { menu_choice = menu(MAIN_MENU_ROW, 0, 5); switch (menu_choice) { case 1: ins_nodes(mylist); break; case 2: rem_nodes(mylist); break; case 3: search_node(mylist); break; case 4: sort_list(mylist); break; case 5: print_list(mylist); break; default: final_status(mylist); break; } } while (menu_choice); /* ..and finally destroy the list. */ prompt_and_pause("\n\nLet's tidy up and destroy the list..- Bye!"); SLISTdestroy(mylist); return 0; }
static struct dsync_mailbox_tree *create_random_tree(void) { struct dsync_mailbox_tree *tree; unsigned int counter = 0; tree = dsync_mailbox_tree_init('/', '_'); create_random_nodes(tree, "", 0, &counter); return tree; }
void display_callback( void ){ delete nodes; nodes = new Node[ 0 ]; nodes_len = 0; create_random_nodes( &nodes, &nodes_len, 100 ); create_links( nodes, nodes_len, 100 ); glClearColor( 1.0, 0.0, 0.0, 1.0 ); glClear( GL_COLOR_BUFFER_BIT ); std::cout << "actual len: " << nodes_len << "\n\n\n\n\n"; glutSwapBuffers(); glutTimerFunc( frame_delay, render, 0 ); }
static void create_random_nodes(struct dsync_mailbox_tree *tree, const char *parent_name, unsigned int depth, unsigned int *counter) { unsigned int parent_len, i, nodes_count = 1 + rand() % 3; string_t *str; if (depth == MAX_DEPTH) return; str = t_str_new(32); if (*parent_name != '\0') str_printfa(str, "%s/", parent_name); parent_len = str_len(str); for (i = 0; i < nodes_count; i++) { *counter += 1; str_truncate(str, parent_len); str_printfa(str, "%u.%u", depth, i); random_node_create(tree, *counter, str_c(str)); create_random_nodes(tree, str_c(str), depth+1, counter); } }