void select_del(t_select *select) { t_item *to_del; to_del = select->current; if (to_del->next == to_del) select_quit(select, FALSE); to_del->prev->next = to_del->next; to_del->next->prev = to_del->prev; select->current = to_del->next; if (to_del == select->items) select->items = to_del->next; if (to_del->selected) --select->nb_selected; --select->total; free(to_del); select_update(select); select_render(select); }
/* user access arguments: print a tree with argv[1] = root argv[2] = number of elements //*/ int main(int argc, char** argv) { puts("common tree"); unsigned int number_of_nodes=0; unsigned int select=0; /* // debugging input init_root(&root, &number_of_nodes, 100); add_element(root, &number_of_nodes, 50); add_element(root, &number_of_nodes, 150); add_element(root, &number_of_nodes, 25); // add_element(root, &number_of_nodes, 75); add_element(root, &number_of_nodes, 125); add_element(root, &number_of_nodes, 175); add_element(root, &number_of_nodes, 20); add_element(root, &number_of_nodes, 30); // add_element(root, &number_of_nodes, 70); // add_element(root, &number_of_nodes, 80); add_element(root, &number_of_nodes, 120); add_element(root, &number_of_nodes, 130); add_element(root, &number_of_nodes, 170); add_element(root, &number_of_nodes, 180); write_tree(root); quit(&root, &number_of_nodes); exit(EXIT_SUCCESS); //*/ // use of command line arguments /* if(1 < argc){ puts("..automated with command line arguments"); if(3 == argc){ // generate root fprintf(stderr, "tree %d root generated\n", atoi(argv[1])); init_root(&root, &number_of_nodes, atoi(argv[1])); // populate fprintf(stderr, "tree with %d nodes generated\n", atoi(argv[2])); populate_tree(root, &number_of_nodes, atoi(argv[2])); // write puts("write tree to file.."); write_tree(root); puts("done."); // deleteall quit(&root, &number_of_nodes); }else{ puts("Ooups, try:"); fprintf(stderr, "%s <root data> <number of nodes>\n", argv[0]); exit(EXIT_FAILURE); } puts("\n"); exit(EXIT_SUCCESS); } //*/ // use of looped front end do{ printf("\n\navailable operations:\n"); printf("0\tquit\n"); printf("1\tgenerate root\n"); printf("2\tinsert\n"); printf("3\tdelete\n"); printf("4\tfind\n"); printf("5\tcopy\n"); printf("6\ttraverse\n"); printf("7\trotate\n"); printf("8\tshow number of nodes\n"); printf("9\tprint tree to file\n"); readdigit(&select, "select an operation:"); if(0 == select){ // exit puts("-> QUIT"); select_quit(&number_of_nodes); break; }else if(1 == select){ // generate root puts("-> GENERATE ROOT"); select_generate_root(&number_of_nodes); }else if(2 == select){ // insert a node puts("-> INSERT"); select_insert(&number_of_nodes); }else if(3 == select){ // delete puts("-> DELETE"); select_delete(&number_of_nodes); }else if(4 == select){ // find puts("-> FIND ELEMENT"); select_find(&number_of_nodes); }else if(5 == select){ // copy puts("-> COPY"); select_copy(&number_of_nodes); }else if(6 == select){ // traverse puts("-> TRAVERSE"); select_traverse(&number_of_nodes); }else if(7 == select){ // rotate puts("-> ROTATE"); select_rotate(&number_of_nodes); }else if(8 == select){ // number of elements puts("-> NUMBER OF ELEMENTS"); select_number_of_nodes(&number_of_nodes); }else if(9 == select){ // print to file puts("-> PRINT TO FILE"); select_print(&number_of_nodes); } }while(1); if(0 != number_of_nodes){ delete_tree(&number_of_nodes); } puts("READY."); exit(EXIT_SUCCESS); }