SlideShare una empresa de Scribd logo
1 de 29
Estructuras dinámicas
de datos
• La memoria es reservada, o asignada, en el
momento de la compilación del programa.
• Tamaño delimitado: ocupan un número fijo de
posiciones de memoria.
Estructuras Estáticas
Estructuras Dinámicas de datos
• Se les asigna memoria en tiempo de ejecución.
• Cambian su tamaño, al poder expandirse y
contraerse.
• Se crean en tiempo de ejecución del programa
invocando a la función "malloc".
• Con la función “free” se libera el espacio de los
miembros generados con “malloc”.
Tipos: Estructuras Dinámicas
• Listas Enlazadas.
• Pilas.
• Colas.
Listas Enlazadas
Representación gráfica de una lista simple
primeroPtr ultimoPtr
Datos
Datos pSig Datos pSig
Datos: Son los datos que contiene cada nodo.
pSig: es un puntero al siguiente nodo
Listas circulares con enlace simple
primeroPtr
Datos pSig Datos pSig Datos pSig
Listas enlazadas con enlace doble
primeroPtr
pSig
Datos pSig
pAnt Datos pAnt Datos
Listas circulares con enlace doble
primeroPtr
pSig
pAnt Datos pSig
pAnt Datos pSig
pAnt Datos
Lista simple operación: Insertar al frente
primeroPtr ultimoPtr
Datos
Datos pSig Datos pSig
Paso 1: Crear nodo
Datos pSig
nuevoPtr
Operación: Insertar al frente
primeroPtr ultimoPtr
Datos
Datos pSig Datos pSig
Paso 2: Enlazar nodo
Datos pSig
nuevoPtr pSig = primeroPtr
Operación: Insertar al frente
primeroPtr
ultimoPtr
Datos
Datos pSig Datos pSig
Paso 3: Redefinir comienzo de lista
Datos pSig primeroPtr = nuevoPtr
nuevoPtr
Operación: Insertar al final
primeroPtr ultimoPtr
Datos
Datos pSig Datos pSig
Paso 1: Crear nodo
nuevoPtr Datos
Operación: Insertar al final
primeroPtr ultimoPtr
Datos pSig Datos pSig
Paso 2: Enlazar nodo
nuevoPtr
Datos pSig
Datos
pSig = nuevoPtr
Operación: Insertar al final
primeroPtr
ultimoPtr
Datos pSig Datos pSig
Paso 3: Redefinir final de lista
nuevoPtr
Datos pSig
Datos
ultimoPtr = nuevoPtr
Operación: Eliminar del final
primeroPtr ultimoPtr
Datos
Datos pSig Datos pSig
Paso 1: Orientar ultimoPtr
Operación: Eliminar del final
primeroPtr ultimoPtr
Datos
Datos pSig
Paso 2: Borrar puntero a siguiente nodo
Datos
Código “artesanal” para crear lista simple
....
struct nodo
{
int CoordX;
int CoordY;
struct nodo *next;
};
int main()
{
struct nodo A,B,C,D,E,F, *temp;
A.CoordX = 1; A.CoordY = 2; B.CoordX = 3; B.CoordY = 4;
A.next = &B; B.next = &C; C.next = &D; D.next = &E; E.next = &F; F.next = NULL;
clrscr();
temp = &A; printf("%d %d ", temp->CoordX, temp->CoordY);
temp = &B; printf("%d %d ", temp->CoordX, temp->CoordY);
temp = &C; printf("%d %d", (*temp).CoordX, (*temp).CoordY);
temp = &D; printf("%d %d", (*temp).CoordX, (*temp).CoordY);
return 0;
}
Código sugerido para crear lista simple
....
struct nodo
{
int CoordX; int CoordY;
struct nodo *next;
}INICIO;
struct nodo *nuevonodo (struct nodo *);
struct nodo *nuevonodoFrente (struct nodo *);
void GrabarPunto (struct nodo *);
int main()
{
int i;
struct nodo *ULTIMO, *PRIMERO;
PRIMERO = &INICIO; PRIMERO->next = NULL;
ULTIMO = PRIMERO;
for (i=0; i<10; i++) // creamos 10 nodos
{
ULTIMO = nuevonodo(ULTIMO);
GrabarPunto (ULTIMO);
}
}
Funciones para crear lista simple
struct nodo *nuevonodo (struct nodo *actual)
{
struct nodo *nuevo;
nuevo = (struct nodo *) malloc (sizeof (struct nodo));
actual->next = nuevo;
nuevo->next = NULL;
return nuevo;
}
struct nodo *nuevonodoFrente (struct nodo *actual)
{
struct nodo *nuevo;
nuevo = (struct nodo *) malloc (sizeof (struct nodo));
nuevo ->next = actual;
return nuevo;
}
Void GrabarPunto (struct nodo *actual)
{
actual ->CoordX = serie.Latitud();
actual ->CoordY = serir.Longitu();
}
Pilas
Pila: Lista enlazada con modalidad LIFO
• Lista Enlazada con modalidad LIFO (Last In
First Out). Lo ultimo en entrar es lo primero en
salir.
• Las operaciones de adición/eliminación se
realizan por el comienzo de la Lista (Pila).
Estas operaciones se conocen con el nombre
de “push” y “pop” respectivamente.
Pila
Datos
Datos pSig Datos pSig
Pila: Lista enlazada con modalidad LIFO
Entrada: Push
Salida: Pop
Ejemplo Pila: Lista enlazada tipo LIFO
La pila de la computadora (Stack): A medida que un
programa va llamando a sus funciones, existe un
registro llamado Pila, que contiene la información de
ubicación del proceso que ha llamado al proceso actual.
Se trata de una estructura de tipo LIFO. La ultima
función que ha sido invocada, es a donde hay que
regresar primero, eliminándola de la lista.
Stack overflow: Los desbordamientos de pila ocurren
comúnmente debido a aplicaciones con muchos niveles
de anidamiento, o en bucles infinitos donde hay
llamadas a funciones internamente. Cuando se pierde el
control sobre los lazos de control anidados, suele
desbordarse la pila.
Colas
Cola: Lista enlazada con modalidad FIFO
• Lista Enlazada con modalidad FIFO (First In First
Out). El primero en entrar es el primero en salir.
• Las operaciones de adición se realizan por el
final de la fila (Cola), operación push.
• Las operaciones de eliminación se realizan por el
comienzo de la Cola, operación pop.
• Lista de Espera: de tareas, personas, procesos.
COLA
Datos
Datos pSig Datos pSig
Cola: Lista enlazada con modalidad FIFO
Entrada: Push
Salida: Pop
Cola: Lista enlazada con modalidad FIFO
Ejemplo: Un sistema de control puede dar
tratamiento a las tareas solicitadas, a partir de
ciertos eventos acorde a una estructura de tipo
FIFO, dando prioridad según el momento en el que
se produce la solicitud.
Una COLA permitiría dar tratamiento a
determinadas tareas, a partir de la activación de
ciertos sensores. Podemos decir:
COLA_Entradas
COLA_Tareas
struct nodo *agregar (struct nodo *fin, struct nodo *nuevo)
{
if ( fin ) {
fin ->next=nuevo;
fin = fin->next;
}
else fin = nuevo;
return fin;
}
struct nodo *quitar (struct nodo *inicio)
{
struct nodo *siguiente;
if ( inicio ) {
siguiente = inicio->next;
free(inicio);
}
else return NULL;
}
return siguiente;
}
Cola (FIFO): Funciones para agregar/quitar

Más contenido relacionado

Similar a Presentacion sobre Listas Enlazadas en C++.ppt

Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrbviela6
 
Trabajo colaborativo2
Trabajo colaborativo2Trabajo colaborativo2
Trabajo colaborativo2ialbadanm
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130reyarturo16
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colasjorgeluis0317
 
Sesion n°1 estructura de datos
Sesion n°1 estructura de datosSesion n°1 estructura de datos
Sesion n°1 estructura de datosJosé Braganza
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colasiventura26
 
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)José Antonio Sandoval Acosta
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Edward Mejia Gomez
 
Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colasCecilia Loeza
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesJosé Antonio Sandoval Acosta
 
Arrays csharp visto_desde_c
Arrays csharp visto_desde_cArrays csharp visto_desde_c
Arrays csharp visto_desde_cPamela Calavetta
 

Similar a Presentacion sobre Listas Enlazadas en C++.ppt (20)

Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Estructura de datos.vrb
Estructura de datos.vrbEstructura de datos.vrb
Estructura de datos.vrb
 
Unidad iii pilas y colas
Unidad iii pilas y colasUnidad iii pilas y colas
Unidad iii pilas y colas
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Trabajo colaborativo2
Trabajo colaborativo2Trabajo colaborativo2
Trabajo colaborativo2
 
2- TDA Listas
2- TDA Listas2- TDA Listas
2- TDA Listas
 
Listas, pilas y colas richard ramos 09-1130
Listas, pilas y colas   richard ramos 09-1130Listas, pilas y colas   richard ramos 09-1130
Listas, pilas y colas richard ramos 09-1130
 
Listas, pilas & colas
Listas, pilas & colasListas, pilas & colas
Listas, pilas & colas
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Sesion n°1 estructura de datos
Sesion n°1 estructura de datosSesion n°1 estructura de datos
Sesion n°1 estructura de datos
 
ED Listas, Pilas y Colas
ED Listas, Pilas y ColasED Listas, Pilas y Colas
ED Listas, Pilas y Colas
 
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)Estructura de datos - Unidad 3 Estructuras Lineales (POO)
Estructura de datos - Unidad 3 Estructuras Lineales (POO)
 
Java 8
Java 8Java 8
Java 8
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
Unidad iii Pilas y colas
Unidad iii Pilas y colasUnidad iii Pilas y colas
Unidad iii Pilas y colas
 
2 punteros y lenguaje c
2 punteros y lenguaje c2 punteros y lenguaje c
2 punteros y lenguaje c
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras Lineales
 
Arrays csharp visto_desde_c
Arrays csharp visto_desde_cArrays csharp visto_desde_c
Arrays csharp visto_desde_c
 

Presentacion sobre Listas Enlazadas en C++.ppt

  • 2. • La memoria es reservada, o asignada, en el momento de la compilación del programa. • Tamaño delimitado: ocupan un número fijo de posiciones de memoria. Estructuras Estáticas
  • 3. Estructuras Dinámicas de datos • Se les asigna memoria en tiempo de ejecución. • Cambian su tamaño, al poder expandirse y contraerse. • Se crean en tiempo de ejecución del programa invocando a la función "malloc". • Con la función “free” se libera el espacio de los miembros generados con “malloc”.
  • 4. Tipos: Estructuras Dinámicas • Listas Enlazadas. • Pilas. • Colas.
  • 6. Representación gráfica de una lista simple primeroPtr ultimoPtr Datos Datos pSig Datos pSig Datos: Son los datos que contiene cada nodo. pSig: es un puntero al siguiente nodo
  • 7. Listas circulares con enlace simple primeroPtr Datos pSig Datos pSig Datos pSig
  • 8. Listas enlazadas con enlace doble primeroPtr pSig Datos pSig pAnt Datos pAnt Datos
  • 9. Listas circulares con enlace doble primeroPtr pSig pAnt Datos pSig pAnt Datos pSig pAnt Datos
  • 10. Lista simple operación: Insertar al frente primeroPtr ultimoPtr Datos Datos pSig Datos pSig Paso 1: Crear nodo Datos pSig nuevoPtr
  • 11. Operación: Insertar al frente primeroPtr ultimoPtr Datos Datos pSig Datos pSig Paso 2: Enlazar nodo Datos pSig nuevoPtr pSig = primeroPtr
  • 12. Operación: Insertar al frente primeroPtr ultimoPtr Datos Datos pSig Datos pSig Paso 3: Redefinir comienzo de lista Datos pSig primeroPtr = nuevoPtr nuevoPtr
  • 13. Operación: Insertar al final primeroPtr ultimoPtr Datos Datos pSig Datos pSig Paso 1: Crear nodo nuevoPtr Datos
  • 14. Operación: Insertar al final primeroPtr ultimoPtr Datos pSig Datos pSig Paso 2: Enlazar nodo nuevoPtr Datos pSig Datos pSig = nuevoPtr
  • 15. Operación: Insertar al final primeroPtr ultimoPtr Datos pSig Datos pSig Paso 3: Redefinir final de lista nuevoPtr Datos pSig Datos ultimoPtr = nuevoPtr
  • 16. Operación: Eliminar del final primeroPtr ultimoPtr Datos Datos pSig Datos pSig Paso 1: Orientar ultimoPtr
  • 17. Operación: Eliminar del final primeroPtr ultimoPtr Datos Datos pSig Paso 2: Borrar puntero a siguiente nodo Datos
  • 18. Código “artesanal” para crear lista simple .... struct nodo { int CoordX; int CoordY; struct nodo *next; }; int main() { struct nodo A,B,C,D,E,F, *temp; A.CoordX = 1; A.CoordY = 2; B.CoordX = 3; B.CoordY = 4; A.next = &B; B.next = &C; C.next = &D; D.next = &E; E.next = &F; F.next = NULL; clrscr(); temp = &A; printf("%d %d ", temp->CoordX, temp->CoordY); temp = &B; printf("%d %d ", temp->CoordX, temp->CoordY); temp = &C; printf("%d %d", (*temp).CoordX, (*temp).CoordY); temp = &D; printf("%d %d", (*temp).CoordX, (*temp).CoordY); return 0; }
  • 19. Código sugerido para crear lista simple .... struct nodo { int CoordX; int CoordY; struct nodo *next; }INICIO; struct nodo *nuevonodo (struct nodo *); struct nodo *nuevonodoFrente (struct nodo *); void GrabarPunto (struct nodo *); int main() { int i; struct nodo *ULTIMO, *PRIMERO; PRIMERO = &INICIO; PRIMERO->next = NULL; ULTIMO = PRIMERO; for (i=0; i<10; i++) // creamos 10 nodos { ULTIMO = nuevonodo(ULTIMO); GrabarPunto (ULTIMO); } }
  • 20. Funciones para crear lista simple struct nodo *nuevonodo (struct nodo *actual) { struct nodo *nuevo; nuevo = (struct nodo *) malloc (sizeof (struct nodo)); actual->next = nuevo; nuevo->next = NULL; return nuevo; } struct nodo *nuevonodoFrente (struct nodo *actual) { struct nodo *nuevo; nuevo = (struct nodo *) malloc (sizeof (struct nodo)); nuevo ->next = actual; return nuevo; } Void GrabarPunto (struct nodo *actual) { actual ->CoordX = serie.Latitud(); actual ->CoordY = serir.Longitu(); }
  • 21. Pilas
  • 22. Pila: Lista enlazada con modalidad LIFO • Lista Enlazada con modalidad LIFO (Last In First Out). Lo ultimo en entrar es lo primero en salir. • Las operaciones de adición/eliminación se realizan por el comienzo de la Lista (Pila). Estas operaciones se conocen con el nombre de “push” y “pop” respectivamente.
  • 23. Pila Datos Datos pSig Datos pSig Pila: Lista enlazada con modalidad LIFO Entrada: Push Salida: Pop
  • 24. Ejemplo Pila: Lista enlazada tipo LIFO La pila de la computadora (Stack): A medida que un programa va llamando a sus funciones, existe un registro llamado Pila, que contiene la información de ubicación del proceso que ha llamado al proceso actual. Se trata de una estructura de tipo LIFO. La ultima función que ha sido invocada, es a donde hay que regresar primero, eliminándola de la lista. Stack overflow: Los desbordamientos de pila ocurren comúnmente debido a aplicaciones con muchos niveles de anidamiento, o en bucles infinitos donde hay llamadas a funciones internamente. Cuando se pierde el control sobre los lazos de control anidados, suele desbordarse la pila.
  • 25. Colas
  • 26. Cola: Lista enlazada con modalidad FIFO • Lista Enlazada con modalidad FIFO (First In First Out). El primero en entrar es el primero en salir. • Las operaciones de adición se realizan por el final de la fila (Cola), operación push. • Las operaciones de eliminación se realizan por el comienzo de la Cola, operación pop. • Lista de Espera: de tareas, personas, procesos.
  • 27. COLA Datos Datos pSig Datos pSig Cola: Lista enlazada con modalidad FIFO Entrada: Push Salida: Pop
  • 28. Cola: Lista enlazada con modalidad FIFO Ejemplo: Un sistema de control puede dar tratamiento a las tareas solicitadas, a partir de ciertos eventos acorde a una estructura de tipo FIFO, dando prioridad según el momento en el que se produce la solicitud. Una COLA permitiría dar tratamiento a determinadas tareas, a partir de la activación de ciertos sensores. Podemos decir: COLA_Entradas COLA_Tareas
  • 29. struct nodo *agregar (struct nodo *fin, struct nodo *nuevo) { if ( fin ) { fin ->next=nuevo; fin = fin->next; } else fin = nuevo; return fin; } struct nodo *quitar (struct nodo *inicio) { struct nodo *siguiente; if ( inicio ) { siguiente = inicio->next; free(inicio); } else return NULL; } return siguiente; } Cola (FIFO): Funciones para agregar/quitar