Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Duda sobre Listas simples.

Estas en el tema de Duda sobre Listas simples. en el foro de C/C++ en Foros del Web. Buenas a todos, tengo una duda que pudiera parecer tonta, resulta estoy comenzando a estudiar los tipos de estructuras (pilas, colas, listas) y se me ...
  #1 (permalink)  
Antiguo 22/07/2014, 21:48
Avatar de Swastik  
Fecha de Ingreso: noviembre-2013
Mensajes: 9
Antigüedad: 10 años, 5 meses
Puntos: 1
Duda sobre Listas simples.

Buenas a todos, tengo una duda que pudiera parecer tonta, resulta estoy comenzando a estudiar los tipos de estructuras (pilas, colas, listas) y se me hace un poco engorroso por novato.

Me han mandado a investigar sobre Listas con centinelas ( o nodo ficticio) y no encuentro casi material, me han dejado esto que vendría siendo como seria el nodo centinela.


Código C:
Ver original
  1. typedef struct nodo
  2. {
  3.      char *dato;
  4.      struct nodo *siguiente;
  5. } NODO;
  6.  
  7.  
  8. typedef struct centinela           // este seria el nodo centinela.
  9. {
  10.      int cant_nodos;
  11.      int mayor;
  12.      int menor;
  13.      NODO *inicio;
  14. }


Ahora bien, vengo trabajando con colas pilas y listas con dos estructuras (una para el nodo donde guardo los elementos y otra estructura con apuntadores para desplazarme)

por ejemplo una cola:


Código C:
Ver original
  1. /////// COLA //////
  2. typedef struct nodo
  3. {
  4.   int    elem;
  5.   struct nodo *sig;
  6.   }NODO;
  7.  
  8. typedef struct cola
  9. {
  10.         NODO *frente;   //frente de la cola
  11.         NODO *final;     //final de la cola
  12.   }COLA;

la pregunta es, mi 2da estructura de la cola vendría siendo como un nodo centinela? por que la estructura es igual a la que puse anteriormente, no se si me explico.
  #2 (permalink)  
Antiguo 29/07/2014, 16:54
 
Fecha de Ingreso: abril-2011
Ubicación: Motril
Mensajes: 49
Antigüedad: 13 años
Puntos: 1
Respuesta: Duda sobre Listas simples.

En tu cola lo que tienes es una lista de nodos enlazada, es decir tienes nodos que tienen un valor y un puntero al siguiente de la lista. Ademas, tienes otra estructura con un puntero al primero de la cola y otro para el ultimo. Para recorrer tu cola empiezas por el primero y continuas hasta llegar al ultimo.

El tu 'centinela' (nunca oi ese nombre) lo que tienes es una lista igual a la de la cola, y ademas otra estructura donde se guarda un puntero al primer elemento (necesario para empezar a recorrer la lista), el numero de elementos en la lista y dos valores mas (que no se que representan). Cada vez que insertes o elimines un elemento, deberas actualizar el valor de cant_nodos. Para recorrerla, empiezas por el inicio e iteras cant_nodos veces.

En resumen: son lo mismo, pero la forma de parar al recorrerlo es lo que cambia. Ademas, en la segunda puedes saber el tamaño de la lista sin recorrerla entera.
__________________
www.anrodse.tk

Última edición por anrodse; 02/08/2014 a las 11:12

Etiquetas: int, listas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:33.