int main() {
	List lista; 
	BSTree pasados[ HASHSIZE ];

	lista = NULL;
  int x;
  for(x=0; x<HASHSIZE; x++) {
    pasados[x] = NULL;
  }
	printf("Ingrese una lista de enteros separados por coma:");

	char str[2000] = "";
	scanf("%s", str);
	lista = crear_lista(lista, str);
	printf("La lista es: \n");
	mostrar_lista(lista);

	printf("\n\n");

	List rList = lista;

	printf("\n\nSacando Duplicados Queda: ");
	sacar_duplicados(lista, pasados);
	mostrar_lista(lista);
	
	printf("\n\n");


}
Пример #2
0
void crear_sala(char *sala_agregar, usuario *user) {
    
    pthread_mutex_lock(&mutex_salas);

    if (existe_elemento(lista_global_salas, sala_agregar, salas_iguales)) {
        
        pthread_mutex_lock(&user->mutex_socket);
        write(user->socket, "\nLa sala ya existe.\n\n", 21);
        pthread_mutex_unlock(&user->mutex_socket);
        
        pthread_mutex_unlock(&mutex_salas);
        return;
    }
    
    sala *nueva_sala = malloc(sizeof(sala));
    
    if (nueva_sala == NULL) {
        fprintf(stderr, "No se puede asignar memoria.\n");
        pthread_mutex_unlock(&mutex_salas);
        return;
    }
    
    nueva_sala->nombre_sala = sala_agregar;
    crear_lista(&nueva_sala->lista_usuarios_activos);
                    
    agregar_principio(&lista_global_salas, nueva_sala);
    
    pthread_mutex_unlock(&mutex_salas);
}
Пример #3
0
int main(void){
	T_LISTA mi_lista;
	mi_lista=crear_lista();
	mostrar_lista(mi_lista);
	printf("\n\n---------------------\n\n");
	ordena_lista(&mi_lista);
	mostrar_lista(mi_lista);
	return 0;
}
Пример #4
0
/*
  Lee una lista de info_t desde la entrada estándar. Después de cada elemento
  hay un espacio en blanco. Termina con un punto.
 */
lista leer_lista() {
  lista res = crear_lista();
  info_t info = leer_info(MAX_LARGO_PALABRA);
  while (es_valida_info(info)) {
    insertar_despues(info, final_lista(res), res);
    info = leer_info(MAX_LARGO_PALABRA);
  }
  liberar_info(info);
  return res;
} // leer_lista
Пример #5
0
bool crear_recorrido(recorrido_t *recorrido, const char *nombre_archivo,
		grafo_t *grafo){
	strncpy(recorrido->nombre_archivo, nombre_archivo, MAX_CARACTERES_ARCHIVO);
	recorrido->nombre_archivo[MAX_CARACTERES_ARCHIVO - 1] = '\0';
	recorrido->distancia_total = 0;
	recorrido->grafo = grafo;
	crear_lista(&(recorrido->lista), "Recorrido");
	bool ok = leer_archivo(recorrido);
	computar_distancias(recorrido);
	return ok;
}
Пример #6
0
int main(){

    t_lista pl;
    t_info pd;

    puts("CREANDO LISTA... \n");
    crear_lista(&pl);

    pd.num = 4;
    printf("INSERTANDO %d ... \n",pd.num);
    //insertarEnOrden(&pl, &pd, comparar);
    insertarAdelante(&pl, &pd);
    //insertarAlFinal(&pl, &pd);

    pd.num = 1;
    printf("INSERTANDO %d ... \n",pd.num);
    //insertarEnOrden(&pl, &pd, comparar);
    //insertarAdelante(&pl, &pd);
    insertarAlFinal(&pl, &pd);

    pd.num = 2;
    printf("INSERTANDO %d ... \n",pd.num);
    //insertarEnOrden(&pl, &pd, comparar);
    insertarAdelante(&pl, &pd);
    //insertarAlFinal(&pl, &pd);

    printf("\nLISTA VACIA?: %s\n", listaVacia(&pl)==1?"SI":"NO");

    puts("LISTANDO... \n");
    listar(&pl);

    ordenar(&pl, comparar);

    puts("LISTANDO... \n");
    listar(&pl);

    puts("\nELIMINANDO EL 4... \n");
    pd.num = 4;
    eliminarDeListaNoOrdenada(&pl, &pd, comparar);

    puts("LISTANDO... \n");
    listar(&pl);

    return 0;
}
Пример #7
0
int main(int argc, char **argv)
{
	FORTRAN_file_descriptor f_dcd=55;
	int natoms, nframes; 

	int stride=1000; /*para saltear pasos*/

	COORD *coord;

	LIST_ID *oxidrilos;

	int i,j;


	oxidrilos = crear_lista(10);

	i_lee_dcd_ (&f_dcd, &natoms, &nframes);

	coord = My_malloc((size_t) natoms * 3 * sizeof(COORD));

	fprintf(stderr, "nframes %d,\tnatoms %d\n", nframes, natoms);

	for(j=0; j<nframes; j+=stride)
	{
		fprintf(stderr, "\nLeyendo foto %d\n", j);

		lee_dcd_ (&f_dcd, &natoms, coord);

		for(i = 0; i<natoms; i++)
		{
			printf( "coord mol %d : %f, %f, %f \n" ,
					i, coord[i].x, coord[i].y, coord[i].z);
		}
	}

	c_lee_dcd_ (&f_dcd);
	My_free(coord);

	eliminar_lista(oxidrilos);


	return(0);
}
Пример #8
0
void desuscribir_usuario(usuario *user) {
    
    pthread_mutex_lock(&mutex_salas);
    
    nodo *aux;
    sala *s;

    aux = user->lista_salas_suscritas.cabeza;
    
    while (aux != NULL) {
        s = (sala *) aux->elemento;
        eliminar_elemento(&s->lista_usuarios_activos, user->nombre_usuario,
                          usuarios_iguales, 0);
        aux = aux -> sig;
    }
    
    crear_lista(&user->lista_salas_suscritas);
    
    pthread_mutex_unlock(&mutex_salas);
}
int main(void) {

	configurar();

	conectar_maestroCPU();

	logueo();

	inicializar_semaforos();

	crear_lista();

	//Este hilo va a escuchar y aceptar las conexiones, con las CPU de forma paralela a la ejecucion de este proceso "main"
	pthread_create(&ejecucion, NULL, ejecutar_proceso, NULL);
	pthread_create(&recibir, NULL, recibir_cpu, NULL);
	pthread_create(&bloquear, NULL, bloquear_procesos, NULL);

	menu();

	liberar_memoria();

	printf(BLANCO "Procesos " ROJO "Finalizados " AZUL "=)\n" FINDETEXTO);
	return 0;
}
Пример #10
0
int main() {
  lista lst = crear_lista();

  nat cont_comandos = 0;
  bool salir = false;
  while (!salir) {

    mostrar_prompt(cont_comandos);
    enum_cmd_t enum_com = identificador_comando();

    // procesar el comando
    switch (enum_com) {
    case cmd_fin:
      salir = true;
      imprimir_con_nl(msg_fin);
      break;
    case cmd_comentario:
      escribir_nueva_linea();
      break;
    case cmd_ins_lista: {
      info_t info = leer_info(MAX_LARGO_PALABRA);
      while (es_valida_info(info)) {
        insertar_despues(info, final_lista(lst), lst);
        info = leer_info(MAX_LARGO_PALABRA);
      }
      liberar_info(info);
      texto_t txt = cadena_a_texto("primero");
      info = crear_info(0, txt);
      insertar_antes(info, inicio_lista(lst), lst);
      imprimir_lista(lst);
      break;
    }
    case cmd_recorrido_lista: {
      if (!es_vacia_lista(lst)) {
        localizador loc = inicio_lista(lst);
        while (es_localizador_lista(loc)) {
          texto_t txt = info_a_texto(info_lista(loc, lst));
          escribir_texto(txt);
          liberar_texto(txt);
          loc = siguiente(loc, lst);
        }
        loc = final_lista(lst);
        while (es_localizador_lista(loc)) {
          texto_t txt = info_a_texto(info_lista(loc, lst));
          escribir_texto(txt);
          liberar_texto(txt);
          loc = anterior(loc, lst);
        }
        escribir_nueva_linea();
      }
      break;
    }
    case cmd_segmentos_lista: {
      int clave1 = leer_int();
      int clave2 = leer_int();
      localizador desde = siguiente_clave(clave1, inicio_lista(lst), lst);
      localizador hasta = anterior_clave(clave2, final_lista(lst), lst);
      if (es_localizador_lista(desde) && es_localizador_lista(hasta) &&
          precede_en_lista(desde, hasta, lst)) {
        lista sgm = separar_segmento(desde, hasta, lst);
        lista copia = segmento_lista(inicio_lista(sgm), final_lista(sgm), sgm);
        imprimir_lista(sgm);
        liberar_lista(sgm);
        insertar_segmento_despues(copia, final_lista(lst), lst);
        liberar_lista(copia);
        imprimir_lista(lst);
      }
      break;
    }
    case cmd_modificar_lista: {
      int clave1 = leer_int();
      int clave2 = leer_int();
      localizador loc1 = siguiente_clave(clave1, inicio_lista(lst), lst);
      localizador loc2 = anterior_clave(clave2, final_lista(lst), lst);
      if (es_localizador_lista(loc1) && es_localizador_lista(loc2)) {
        intercambiar(loc1, loc2, lst);
        imprimir_lista(lst);
        retroceder(loc2, lst);
        imprimir_lista(lst);
      }
      break;
    }
    case cmd_ordenar_lista: {
      nat len_lst = longitud(lst);
      imprimir_int(len_lst);
      localizador loc = inicio_lista(lst);
      for (nat i = 0; i < len_lst / 2 - 1; i++)
        loc = siguiente(loc, lst);
      lista primera = segmento_lista(inicio_lista(lst), loc, lst);
      lista segunda =
          segmento_lista(siguiente(loc, lst), final_lista(lst), lst);

      lista concat = concatenar(primera, segunda);
      imprimir_lista(concat);
      liberar_lista(concat);

      if (son_numeros_iguales(primera, segunda)) {
        imprimir_lista(primera);
      }

      if (!esta_ordenada(primera))
        ordenar(primera);
      if (!esta_ordenada(segunda))
        ordenar(segunda);

      lista mzc = mezcla(primera, segunda);
      imprimir_lista(mzc);

      unificar(mzc);
      imprimir_lista(mzc);
      liberar_lista(mzc);
      liberar_lista(primera);
      liberar_lista(segunda);
      break;
    }
    case cmd_filtrado_lista: {
      int clave = leer_int();
      texto_t palabra = leer_palabra(MAX_LARGO_PALABRA);
      comp_t criterio = texto_a_comp(palabra);
      liberar_texto(palabra);
      if (pertenece(clave, lst)) {
        imprimir_int(cantidad(clave, lst));
      }
      lista flt = filtrado(clave, criterio, lst);
      imprimir_lista(flt);
      liberar_lista(flt);
      break;
    }
    case cmd_reversa_lista: {
      int dato1 = leer_int();
      int dato2 = leer_int();
      if (esta_ordenada(lst) && pertenece(dato1, lst) &&
          pertenece(dato2, lst) && dato1 < dato2) {
        lista sub = sublista(dato1, dato2, lst);
        imprimir_lista(sub);
        lista rev = reversa(sub);
        imprimir_lista(rev);
        cambiar_todos(dato1, dato2, rev);
        imprimir_lista(rev);
        liberar_lista(sub);
        liberar_lista(rev);
      }
      break;
    }
    case cmd_liberar_lista: {
      liberar_lista(lst);
      lst = crear_lista();
      break;
    }
    default:
      imprimir_con_nl(msg_cmd_no_reconocido);
      break;
    } // switch
    texto_t resto_linea = leer_resto_linea(MAX_RESTO_LINEA);
    liberar_texto(resto_linea);
  } // while
  liberar_lista(lst);
  return 0;
}