Beispiel #1
0
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);
}
Beispiel #2
0
Datei: main.c Projekt: Rubusch/c
/*
  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);
}