Estructuras dinámicas en C: Listas tipo Cola

Поділитися
Вставка
  • Опубліковано 15 гру 2024

КОМЕНТАРІ • 15

  • @Profe_Zandor
    @Profe_Zandor 10 місяців тому

    Gracias buen hombre me entere por programar YA, saludos desde Colombia

  • @ryomaechizen7171
    @ryomaechizen7171 3 роки тому +2

    para el que copia y pega para luego ejecutar el programa, en la respuesta ofrecida por el profesor falta unas lineas:
    -int vacia()
    {
    if (raiz == NULL)
    return 1;
    else
    return 0;
    }
    sino te dice que vacia no esta indicada o algo asi, yo lo estoy haciendo en vs code y no sabia porque no podia correrlo.
    por mi cuenta, le saque "return 0;" xq no queria ejecutarlo, no se bien porque.
    muchas gracias

  • @tonymarquezgudi4047
    @tonymarquezgudi4047 6 місяців тому

    gran video

  • @elchamuskooficial4528
    @elchamuskooficial4528 2 роки тому

    Que buena explicación..

  • @lisandroleguizamo3051
    @lisandroleguizamo3051 Рік тому

    hola profe... mi profesor en la facultad usa un doble puntero en las funciones, al igual lo hace con listas.
    digamos q no usa esos 2 punteros raiz y fondo.. como puedo cambiarlo a este para implementsrlo con un puntero doble en la funcion y usar ese nomas?

  • @robersantillan4572
    @robersantillan4572 3 роки тому

    Profe...buen dia ...ante todo muchas grs por sus videos. Pregunta en la Estruc. Dinamicas tipo Cola. Hice el codigo tal cual me indica el video. Pero cuando invoco a la funcion void imprimir(), me muestra los valores
    de los nodos 5 - 10 - 50, al extraer un nodo de la cola, me imprime 10 -5. La pregunta es, para entender como
    la lista tipo COLA hace que el primero que entra es el primera que sale...Como tendria que realizar el codigo de int extraer().. para que salga el 5 y no el 50..? No se si me entiende la pregunta... grs

    • @diegomoissetdeespanes
      @diegomoissetdeespanes  3 роки тому +1

      Comparalo con el siguiente código:
      #include
      #include
      #include
      struct nodo {
      int info;
      struct nodo *sig;
      };
      struct nodo *raiz=NULL;
      struct nodo *fondo=NULL;
      int vacia()
      {
      if (raiz == NULL)
      return 1;
      else
      return 0;
      }
      void insertar(int x)
      {
      struct nodo *nuevo;
      nuevo=malloc(sizeof(struct nodo));
      nuevo->info=x;
      nuevo->sig=NULL;
      if (vacia())
      {
      raiz = nuevo;
      fondo = nuevo;
      }
      else
      {
      fondo->sig = nuevo;
      fondo = nuevo;
      }
      }
      int extraer()
      {
      if (!vacia())
      {
      int informacion = raiz->info;
      struct nodo *bor = raiz;
      if (raiz == fondo)
      {
      raiz = NULL;
      fondo = NULL;
      }
      else
      {
      raiz = raiz->sig;
      }
      free(bor);
      return informacion;
      }
      else
      return -1;
      }
      void imprimir()
      {
      struct nodo *reco = raiz;
      printf("Listado de todos los elementos de la cola.
      ");
      while (reco != NULL)
      {
      printf("%i - ", reco->info);
      reco = reco->sig;
      }
      printf("
      ");
      }
      void liberar()
      {
      struct nodo *reco = raiz;
      struct nodo *bor;
      while (reco != NULL)
      {
      bor = reco;
      reco = reco->sig;
      free(bor);
      }
      }
      void main()
      {
      insertar(1);
      insertar(2);
      insertar(3);
      imprimir();
      printf("Extraemos uno de la cola: %i
      ", extraer());
      imprimir();
      liberar();
      getch();
      return 0;
      }
      Como se insertan los valores en una cola: 1, luego el 2 y finalmente el 3,
      si imprimimos se debe mostrar 1,2 y 3.
      Si extraemos luego debe ser el 1, debido a que es el primero que insertamos.
      Si imprimimos de nuevo luego debe mostrar los valores que restan en la cola que son: 2 y 3.

    • @robersantillan4572
      @robersantillan4572 3 роки тому

      @@diegomoissetdeespanes PERFECTO profe..ahora si..me quedo totalmente en claro el tema la insercion y extraccion de los nodos en este tipo (COLA). En realidad es lo mismo que el anterior..solamente que ahora con estos valores que ingresan al nodo ..me fue
      mas claro. Gracias Profe..

  • @jonathaniurman9794
    @jonathaniurman9794 Рік тому

    Muchas gracias por los videos y la página. Tenia una consulta. Si fondo es un puntero externo al nuevoNodo, cuando se agrega otro nuevo nodo màs, supongamos nuevoNodo2 (cambio el nombre para diferenciar) , no entiendo como es que al hacer fondo->sig= nuevoNodo2 se enlaza la propiedad "sig" del nodo que ya estaba, con el nuevo que se agrega. Porque lo que se esta modificando es el puntero externo fondo, no el nodo que ya estaba creado.(nuevoNodo).
    yo pensaba que si la lista, no estaba vacía, sucedia algo asi: nuevoNodo -> sig = fondo y luego se traslada fondo al nuevo nodo que ingresa recien creado: fondo -> nuevoNodo. Espero haber sido claro y desde ya muchas gracias.
    saludos!

    • @diegomoissetdeespanes
      @diegomoissetdeespanes  Рік тому +1

      Si se modifica el último nodo cuando hacemos la asignación:
      fondo->sig = nuevoNodo2
      No se modificaría el último nodo de la lista si hacemos:
      fondo = nuevoNodo2
      El puntero sig se encuentra dentro del nodo y si sabemos que fondo tiene la dirección del último nodo de la lista, la asignación:
      fondo-sig = nuevoNodo2
      estamos enlazando el último nodo de la lista con el nuevo nodo (si la lista hasta ese momento tenía 10 nodos, ahora pasa a tener 11 nodos)
      Es incorrecto hacer:
      nuevoNodo -> sig = fondo
      si decimos que nuevoNodo tiene la referencia al que va a ser el último nodo de la lista, después de este no debe hacer otro nodo, por ello debemos asignar NULL al puntero interno sig.
      Cometí el error de no hacer dibujos de las listas para su mejor entendimiento.
      Saludos.

  • @robersantillan4572
    @robersantillan4572 3 роки тому

    Profe como va...gracias por los videos...Me esta costando bastante ..pero ahi vamos..Una pregunta ud tendria un link o tutorial de como debugear en codeblock..creo que esa accion me va ayudar a entender mejor cuando van cambiando los valores de los punteros y la info de los nodos... en este caso..que es lo mas que cuesta.Desde ya muchas gracias por todo su incalculable aporte

    • @diegomoissetdeespanes
      @diegomoissetdeespanes  3 роки тому

      Hay que crear un proyecto para poder depurar un programa con el CodeBlock
      ua-cam.com/video/rwKUOd-gyZU/v-deo.html

  • @gasparfierre9562
    @gasparfierre9562 2 роки тому

    hola profe ami me tira este warning en return 0 ;
    warning:´return´ vitch a value , in function returning void

    • @diegomoissetdeespanes
      @diegomoissetdeespanes  2 роки тому

      Gracias, cometí un error, la función debe retornar un tipo de dato int:
      int main()
      {
      insertar(5);
      insertar(10);
      insertar(50);
      imprimir();
      printf("Extraemos uno de la cola: %i
      ", extraer());
      imprimir();
      liberar();
      getch();
      return 0;
      }

    • @gasparfierre9562
      @gasparfierre9562 2 роки тому +1

      @@diegomoissetdeespanes ok , profe entonces en vez de un void main () va un int main ()