SlideShare una empresa de Scribd logo
1 de 29
Company
LOGO
Estructuras Dinámicas Lineales de
Datos
Moisés Medina Q
Sexto “A”
Moisés Medina
Estructuras Dinámicas de Datos
Contenido
Aplicación
Pilas
Operaciones
Listas Doblemente Enlazadas
Listas Circulares
Moisés Medina
Definición
Listas Circulares
Una lista circular es una lista lineal en la que el último
nodo a punta al primero.
Las listas circulares evitan excepciones en la
operaciones que se realicen sobre ellas. No existen
casos especiales, cada nodo siempre tiene uno anterior
y uno siguiente.
Listad Circulares
A todos los efectos, las listas circulares son como las
listas abiertas en cuanto a las operaciones que se pueden
realizar sobre ellas:
 Añadir o insertar elementos.
 Buscar o localizar elementos.
 Borrar elementos.
 Moverse a través de la lista, siguiente.
Cada una de éstas operaciones podrá tener varios casos
especiales, por ejemplo, tendremos que tener en cuenta
cuando se inserte un nodo en una lista vacía, o cuando se
elimina el único nodo de una lista.
Moisés Medina
Operaciones
Listas Circulares
Añadir elemento en una lista circular vacía
Partiremos de que ya tenemos el nodo a insertar y, por
supuesto un puntero que apunte a él, además el puntero
que define la lista, que valdrá NULL:
El proceso es muy simple, bastará con hacer que:
 lista apunte a nodo.
 y lista->siguiente apunte a nodo.
Moisés Medina
Añadir un Elemento
Listas Circulares
Añadir elemento en una lista circular no vacía
De nuevo partiremos de un nodo a insertar, con un
puntero que apunte a él, y de una lista, en este caso, el
puntero no será nulo:
El proceso sigue siendo muy sencillo:
 Hacemos que nodo->siguiente apunte a lista->siguiente.
 Después que lista->siguiente apunte a nodo.
Moisés Medina
Añadir un Elemento
Listas Circulares
Añadir elemento en una lista circular, caso general
Para generalizar los dos casos anteriores, sólo
necesitamos añadir una operación:
 Si lista está vacía hacemos que lista apunte a nodo.
 Si lista no está vacía, hacemos que nodo->siguiente
apunte a lista->siguiente.
 Después que lista->siguiente apunte a nodo.
Moisés Medina
Añadir un Elemento
Listas Circulares
Buscar o localizar un elemento de una lista circular
A la hora de buscar elementos en una lista circular sólo
hay que tener una precaución, es necesario almacenar el
puntero del nodo en que se empezó la búsqueda, para
poder detectar el caso en que no exista el valor que se
busca. Por lo demás, la búsqueda es igual que en el caso
de las listas abiertas, salvo que podemos empezar en
cualquier punto de la lista.
Moisés Medina
Buscar un Elemento
Listas Circulares
Eliminar un nodo cualquiera, que no sea el apuntado por lista.
 necesitamos localizar el nodo anterior al que queremos
borrar. Como el principio de la lista puede ser cualquier
nodo, haremos que sea precisamente lista quien apunte al
nodo anterior al que queremos eliminar.
Moisés Medina
Eliminar un Elemento
Listas Circulares
Eliminar el nodo apuntado por lista, y que no sea el
único nodo.
 ya que lista nunca será el nodo a eliminar, salvo que sea
el único nodo de la lista.
 Una vez localizado el nodo anterior y apuntado por
lista, hacemos que lista->siguiente apunte a nodo-
>siguiente. Y a continuación borramos nodo.
Moisés Medina
Eliminar un Elemento
Listas Circulares
Eliminar el único nodo de la lista.
 En el caso de que sólo exista un nodo, será imposible
localizar el nodo anterior, así que simplemente
eliminaremos el nodo, y haremos que lista valga NULL.
Moisés Medina
Eliminar un Elemento
Listas Doblemente Enlazadas
Una lista doblemente enlazada es una lista lineal en la
que cada nodo tiene dos enlaces, uno al nodo siguiente, y
otro al anterior.
Las listas doblemente enlazadas no necesitan un nodo
especial para acceder a ellas, pueden recorrerse en ambos
sentidos a partir de cualquier nodo, esto es porque a partir
de cualquier nodo, siempre es posible alcanzar cualquier
nodo de la lista, hasta que se llega a uno de los extremos.
Moisés Medina
Definición
Listas Doblemente Enlazadas
De nuevo tenemos el mismo repertorio
de operaciones sobre este tipo listas:
Añadir o insertar elementos.
Buscar o localizar elementos.
Borrar elementos.
Moverse a través de la lista, siguiente y
anterior.
Moisés Medina
Operaciones
Listas Doblemente Enlazadas
Moisés Medina
Añadir un elemento
Insertar un elemento en la primera posición de la lista
Partimos de una lista no vacía. Para simplificar,
consideraremos que lista apunta al primer elemento de la
lista doblemente enlazada:
El proceso es el siguiente:
 nodo->siguiente debe apuntar a Lista.
 nodo->anterior apuntará a Lista->anterior.
 Lista->anterior debe apuntar a nodo.
Listas Doblemente Enlazadas
Insertar un elemento en la última posición de la lista
Igual que en el caso anterior, partiremos de una lista no
vacía, y de nuevo para simplificar, que Lista está
apuntando al último elemento de la lista:
El proceso es el siguiente:
 nodo->siguiente debe apuntar a Lista->siguiente (NULL).
 Lista->siguiente debe apuntar a nodo.
 nodo->anterior apuntará a Lista.
Moisés Medina
Añadir un elemento
Listas Doblemente Enlazadas
Insertar un elemento a continuación de un nodo
cualquiera de una lista
El proceso sigue siendo muy sencillo:
 Hacemos que nodo->siguiente apunte a lista->siguiente.
 Hacemos que Lista->siguiente apunte a nodo.
 Hacemos que nodo->anterior apunte a lista.
 Hacemos que nodo->siguiente->anterior apunte a nodo.
Moisés Medina
Añadir un elemento
Listas Doblemente Enlazadas
Añadir elemento en una lista doblemente
enlazada, caso general
Para generalizar todos los casos anteriores, sólo
necesitamos añadir una operación:
 Si lista está vacía hacemos que Lista apunte a nodo. Y
nodo->anterior y nodo->siguiente a NULL.
 Si lista no está vacía, hacemos que nodo->siguiente
apunte a Lista->siguiente.
 Después que Lista->siguiente apunte a nodo.
 Hacemos que nodo->anterior apunte a Lista.
 Si nodo->siguiente no es NULL, entonces hacemos que
nodo->siguiente->anterior apunte a nodo.
Moisés Medina
Añadir un elemento
Listas Doblemente Enlazadas
Para recorrer una lista procederemos de un modo
parecido al que usábamos con las listas abiertas, ahora no
necesitamos un puntero auxiliar, pero tenemos que tener
en cuenta que Lista no tiene por qué estar en uno de los
extremos:
 Retrocedemos hasta el comienzo de la lista, asignamos
a lista el valor de lista->anterior mientras lista->anterior no
sea NULL.
 Abriremos un bucle que al menos debe tener una
condición, que el índice no sea NULL.
 Dentro del bucle asignaremos a lista el valor del nodo
siguiente al actual.
Moisés Medina
Buscar un elemento
Listas Doblemente Enlazadas
Eliminar el único nodo en una lista doblemente
enlazada
En este caso, ese nodo será el apuntado por Lista. El
proceso es simple:
 Eliminamos el nodo.
 Hacemos que Lista apunte a NULL.
Moisés Medina
Eliminar un elemento
Listas Doblemente Enlazadas
Eliminar el primer nodo de una lista doblemente
enlazada
Tenemos los dos casos posibles, que el nodo a borrar
esté apuntado por Lista o que no. Si lo está, simplemente
hacemos que Lista sea Lista->siguiente.
 Si nodo apunta a Lista, hacemos que Lista apunte a
Lista->siguiente.
 Hacemos que nodo->siguiente->anterior apunte a NULL
 Borramos el nodo apuntado por nodo.
Moisés Medina
Eliminar un elemento
Listas Doblemente Enlazadas
Eliminar el último nodo de una lista doblemente
enlazada
De nuevo tenemos los dos casos posibles, que el nodo
a borrar esté apuntado por Lista o que no. Si lo
está, simplemente hacemos que Lista sea Lista->anterior.
 Si nodo apunta a Lista, hacemos que Lista apunte a
Lista->anterior.
 Hacemos que nodo->anterior->siguiente apunte a NULL
 Borramos el nodo apuntado por nodo.
Moisés Medina
Eliminar un elemento
Listas Doblemente Enlazadas
Eliminar un nodo intermedio de una lista doblemente
enlazada
 Hacemos que nodo->anterior->siguiente apunte a nodo-
>siguiente.
 Hacemos que nodo->siguiente->anterior apunte a nodo-
>anterior.
 Borramos el nodo apuntado por nodo.
Moisés Medina
Eliminar un elemento
Listas Doblemente Enlazadas
Eliminar un nodo de una lista doblemente
enlazada, caso general
 Si nodo apunta a Lista,
 Si Lista->anterior no es NULL hacemos que Lista
apunte a Lista->anterior.
 Si Lista->siguiente no es NULL hacemos que Lista
apunte a Lista->siguiente.
 Si ambos son NULL, hacemos que Lista sea NULL.
 Si nodo->anterior no es NULL, hacemos que nodo-
>anterior->siguiente apunte a nodo->siguiente.
 Si nodo->siguiente no es NULL, hacemos que nodo-
>siguiente->anterior apunte a nodo->anterior.
 Borramos el nodo apuntado por nodo.
Moisés Medina
Eliminar un elemento
Pilas
Una pila es un tipo especial de lista abierta en la que
sólo se pueden insertar y eliminar nodos en uno de los
extremos de la lista. Estas operaciones se conocen como
"push" y "pop", respectivamente "empujar" y "tirar".
Además, las escrituras de datos siempre son inserciones
de nodos, y las lecturas siempre eliminan el nodo leído.
Moisés Medina
Definición
Pilas
Operaciones básicas con pilas
Las pilas tienen un conjunto de operaciones muy limitado,
sólo permiten las operaciones de "push" y "pop":
 Push: Añadir un elemento al final de la pila.
 Pop: Leer y eliminar un elemento del final de la pila.
Moisés Medina
Operaciones
Pilas
Push en una pila vacía
Partiremos de que ya tenemos el nodo a insertar y, por
supuesto un puntero que apunte a él, además el puntero a
la pila valdrá NULL:
El proceso es muy simple, bastará con que:
 nodo->siguiente apunte a NULL.
 Pila apunte a nodo.
Moisés Medina
Push
Pilas
Push en una pila no vacía
De nuevo partiremos de un nodo a insertar, con un
puntero que apunte a él, y de una pila, en este caso no
vacía:
El proceso sigue siendo muy sencillo:
 Hacemos que nodo->siguiente apunte a Pila.
 Hacemos que Pila apunte a nodo.
Moisés Medina
Push
Pilas
Pop, leer y eliminar un elemento
 Hacemos que nodo apunte al primer elemento de la
pila, es decir a Pila.
 Asignamos a Pila la dirección del segundo nodo de la
pila: Pila->siguiente.
 Guardamos el contenido del nodo para devolverlo como
retorno, recuerda que la operación pop equivale a leer y
borrar.
 Liberamos la memoria asignada al primer nodo, el que
queremos eliminar.
Moisés Medina
Pop
Company
LOGO
Moisés Medina

Más contenido relacionado

La actualidad más candente

Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousJose Tannous
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datosmariajuly
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasrehoscript
 
Listas Enlazadas
Listas EnlazadasListas Enlazadas
Listas EnlazadasVane Borjas
 
Listas en C#
Listas en C#Listas en C#
Listas en C#rezzaca
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337CJrosario2
 
8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a ParteUVM
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colasknowallrpa
 
Aplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datosAplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datosK Manuel TN
 

La actualidad más candente (20)

Listas Encadenadas Jose Tannous
Listas Encadenadas Jose TannousListas Encadenadas Jose Tannous
Listas Encadenadas Jose Tannous
 
Diapositiva de l estructura de datos
Diapositiva de l estructura de datosDiapositiva de l estructura de datos
Diapositiva de l estructura de datos
 
Listas
ListasListas
Listas
 
Estructuras lineales
Estructuras linealesEstructuras lineales
Estructuras lineales
 
Unidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicasUnidad 3 estructuras lineales estaticas y dinamicas
Unidad 3 estructuras lineales estaticas y dinamicas
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Listas Enlazadas
Listas EnlazadasListas Enlazadas
Listas Enlazadas
 
Tad Colas
Tad ColasTad Colas
Tad Colas
 
Listas en C#
Listas en C#Listas en C#
Listas en C#
 
Lista simple
Lista simpleLista simple
Lista simple
 
Listas
ListasListas
Listas
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Apuntadores y listas
Apuntadores y listasApuntadores y listas
Apuntadores y listas
 
Unidad 3 Listas Java
Unidad 3 Listas JavaUnidad 3 Listas Java
Unidad 3 Listas Java
 
Colas Circulares
Colas CircularesColas Circulares
Colas Circulares
 
Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337Listas pilas colas_carlos_rosario10-1337
Listas pilas colas_carlos_rosario10-1337
 
8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte8 Listas Encadenadas 2a Parte
8 Listas Encadenadas 2a Parte
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Aplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datosAplicaciòn de las estructuras de datos
Aplicaciòn de las estructuras de datos
 

Similar a Estructuras de datos lineales

Similar a Estructuras de datos lineales (20)

Sesion_09.pptx
Sesion_09.pptxSesion_09.pptx
Sesion_09.pptx
 
Listas de Java
Listas de JavaListas de Java
Listas de Java
 
Pilas, colas & listas estructura de datos
Pilas, colas & listas   estructura de datosPilas, colas & listas   estructura de datos
Pilas, colas & listas estructura de datos
 
Listas
ListasListas
Listas
 
Analisis del cap 8
Analisis del cap 8Analisis del cap 8
Analisis del cap 8
 
Analisis del cap 8
Analisis del cap 8Analisis del cap 8
Analisis del cap 8
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datos
 
UNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{IUNIVERSIDAD TECNICA DE MANAB{I
UNIVERSIDAD TECNICA DE MANAB{I
 
Tda y heaps
Tda y heapsTda y heaps
Tda y heaps
 
Unidad tres estructura de datos
Unidad tres estructura de datosUnidad tres estructura de datos
Unidad tres estructura de datos
 
listas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdflistas Luis Guarata 31332901.pdf
listas Luis Guarata 31332901.pdf
 
Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314Listas pilascolas edward.mejia-10-1314
Listas pilascolas edward.mejia-10-1314
 
05 listas1 t2018
05 listas1 t201805 listas1 t2018
05 listas1 t2018
 
Tipo de estructuras1
Tipo de estructuras1Tipo de estructuras1
Tipo de estructuras1
 
Listas c#
Listas c#Listas c#
Listas c#
 
Estructuraskp
EstructuraskpEstructuraskp
Estructuraskp
 
Estructura de datos evidencias
Estructura de datos evidenciasEstructura de datos evidencias
Estructura de datos evidencias
 
Estructura de datos
Estructura de datosEstructura de datos
Estructura de datos
 
Estructuras dinamicas ppt
Estructuras dinamicas pptEstructuras dinamicas ppt
Estructuras dinamicas ppt
 
135042409-Estructuras-dinamicas-ppt.pptx
135042409-Estructuras-dinamicas-ppt.pptx135042409-Estructuras-dinamicas-ppt.pptx
135042409-Estructuras-dinamicas-ppt.pptx
 

Último

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 

Último (20)

LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 

Estructuras de datos lineales

  • 1. Company LOGO Estructuras Dinámicas Lineales de Datos Moisés Medina Q Sexto “A”
  • 2. Moisés Medina Estructuras Dinámicas de Datos Contenido Aplicación Pilas Operaciones Listas Doblemente Enlazadas Listas Circulares
  • 3. Moisés Medina Definición Listas Circulares Una lista circular es una lista lineal en la que el último nodo a punta al primero. Las listas circulares evitan excepciones en la operaciones que se realicen sobre ellas. No existen casos especiales, cada nodo siempre tiene uno anterior y uno siguiente.
  • 4. Listad Circulares A todos los efectos, las listas circulares son como las listas abiertas en cuanto a las operaciones que se pueden realizar sobre ellas:  Añadir o insertar elementos.  Buscar o localizar elementos.  Borrar elementos.  Moverse a través de la lista, siguiente. Cada una de éstas operaciones podrá tener varios casos especiales, por ejemplo, tendremos que tener en cuenta cuando se inserte un nodo en una lista vacía, o cuando se elimina el único nodo de una lista. Moisés Medina Operaciones
  • 5. Listas Circulares Añadir elemento en una lista circular vacía Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero que define la lista, que valdrá NULL: El proceso es muy simple, bastará con hacer que:  lista apunte a nodo.  y lista->siguiente apunte a nodo. Moisés Medina Añadir un Elemento
  • 6. Listas Circulares Añadir elemento en una lista circular no vacía De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una lista, en este caso, el puntero no será nulo: El proceso sigue siendo muy sencillo:  Hacemos que nodo->siguiente apunte a lista->siguiente.  Después que lista->siguiente apunte a nodo. Moisés Medina Añadir un Elemento
  • 7. Listas Circulares Añadir elemento en una lista circular, caso general Para generalizar los dos casos anteriores, sólo necesitamos añadir una operación:  Si lista está vacía hacemos que lista apunte a nodo.  Si lista no está vacía, hacemos que nodo->siguiente apunte a lista->siguiente.  Después que lista->siguiente apunte a nodo. Moisés Medina Añadir un Elemento
  • 8. Listas Circulares Buscar o localizar un elemento de una lista circular A la hora de buscar elementos en una lista circular sólo hay que tener una precaución, es necesario almacenar el puntero del nodo en que se empezó la búsqueda, para poder detectar el caso en que no exista el valor que se busca. Por lo demás, la búsqueda es igual que en el caso de las listas abiertas, salvo que podemos empezar en cualquier punto de la lista. Moisés Medina Buscar un Elemento
  • 9. Listas Circulares Eliminar un nodo cualquiera, que no sea el apuntado por lista.  necesitamos localizar el nodo anterior al que queremos borrar. Como el principio de la lista puede ser cualquier nodo, haremos que sea precisamente lista quien apunte al nodo anterior al que queremos eliminar. Moisés Medina Eliminar un Elemento
  • 10. Listas Circulares Eliminar el nodo apuntado por lista, y que no sea el único nodo.  ya que lista nunca será el nodo a eliminar, salvo que sea el único nodo de la lista.  Una vez localizado el nodo anterior y apuntado por lista, hacemos que lista->siguiente apunte a nodo- >siguiente. Y a continuación borramos nodo. Moisés Medina Eliminar un Elemento
  • 11. Listas Circulares Eliminar el único nodo de la lista.  En el caso de que sólo exista un nodo, será imposible localizar el nodo anterior, así que simplemente eliminaremos el nodo, y haremos que lista valga NULL. Moisés Medina Eliminar un Elemento
  • 12. Listas Doblemente Enlazadas Una lista doblemente enlazada es una lista lineal en la que cada nodo tiene dos enlaces, uno al nodo siguiente, y otro al anterior. Las listas doblemente enlazadas no necesitan un nodo especial para acceder a ellas, pueden recorrerse en ambos sentidos a partir de cualquier nodo, esto es porque a partir de cualquier nodo, siempre es posible alcanzar cualquier nodo de la lista, hasta que se llega a uno de los extremos. Moisés Medina Definición
  • 13. Listas Doblemente Enlazadas De nuevo tenemos el mismo repertorio de operaciones sobre este tipo listas: Añadir o insertar elementos. Buscar o localizar elementos. Borrar elementos. Moverse a través de la lista, siguiente y anterior. Moisés Medina Operaciones
  • 14. Listas Doblemente Enlazadas Moisés Medina Añadir un elemento Insertar un elemento en la primera posición de la lista Partimos de una lista no vacía. Para simplificar, consideraremos que lista apunta al primer elemento de la lista doblemente enlazada: El proceso es el siguiente:  nodo->siguiente debe apuntar a Lista.  nodo->anterior apuntará a Lista->anterior.  Lista->anterior debe apuntar a nodo.
  • 15. Listas Doblemente Enlazadas Insertar un elemento en la última posición de la lista Igual que en el caso anterior, partiremos de una lista no vacía, y de nuevo para simplificar, que Lista está apuntando al último elemento de la lista: El proceso es el siguiente:  nodo->siguiente debe apuntar a Lista->siguiente (NULL).  Lista->siguiente debe apuntar a nodo.  nodo->anterior apuntará a Lista. Moisés Medina Añadir un elemento
  • 16. Listas Doblemente Enlazadas Insertar un elemento a continuación de un nodo cualquiera de una lista El proceso sigue siendo muy sencillo:  Hacemos que nodo->siguiente apunte a lista->siguiente.  Hacemos que Lista->siguiente apunte a nodo.  Hacemos que nodo->anterior apunte a lista.  Hacemos que nodo->siguiente->anterior apunte a nodo. Moisés Medina Añadir un elemento
  • 17. Listas Doblemente Enlazadas Añadir elemento en una lista doblemente enlazada, caso general Para generalizar todos los casos anteriores, sólo necesitamos añadir una operación:  Si lista está vacía hacemos que Lista apunte a nodo. Y nodo->anterior y nodo->siguiente a NULL.  Si lista no está vacía, hacemos que nodo->siguiente apunte a Lista->siguiente.  Después que Lista->siguiente apunte a nodo.  Hacemos que nodo->anterior apunte a Lista.  Si nodo->siguiente no es NULL, entonces hacemos que nodo->siguiente->anterior apunte a nodo. Moisés Medina Añadir un elemento
  • 18. Listas Doblemente Enlazadas Para recorrer una lista procederemos de un modo parecido al que usábamos con las listas abiertas, ahora no necesitamos un puntero auxiliar, pero tenemos que tener en cuenta que Lista no tiene por qué estar en uno de los extremos:  Retrocedemos hasta el comienzo de la lista, asignamos a lista el valor de lista->anterior mientras lista->anterior no sea NULL.  Abriremos un bucle que al menos debe tener una condición, que el índice no sea NULL.  Dentro del bucle asignaremos a lista el valor del nodo siguiente al actual. Moisés Medina Buscar un elemento
  • 19. Listas Doblemente Enlazadas Eliminar el único nodo en una lista doblemente enlazada En este caso, ese nodo será el apuntado por Lista. El proceso es simple:  Eliminamos el nodo.  Hacemos que Lista apunte a NULL. Moisés Medina Eliminar un elemento
  • 20. Listas Doblemente Enlazadas Eliminar el primer nodo de una lista doblemente enlazada Tenemos los dos casos posibles, que el nodo a borrar esté apuntado por Lista o que no. Si lo está, simplemente hacemos que Lista sea Lista->siguiente.  Si nodo apunta a Lista, hacemos que Lista apunte a Lista->siguiente.  Hacemos que nodo->siguiente->anterior apunte a NULL  Borramos el nodo apuntado por nodo. Moisés Medina Eliminar un elemento
  • 21. Listas Doblemente Enlazadas Eliminar el último nodo de una lista doblemente enlazada De nuevo tenemos los dos casos posibles, que el nodo a borrar esté apuntado por Lista o que no. Si lo está, simplemente hacemos que Lista sea Lista->anterior.  Si nodo apunta a Lista, hacemos que Lista apunte a Lista->anterior.  Hacemos que nodo->anterior->siguiente apunte a NULL  Borramos el nodo apuntado por nodo. Moisés Medina Eliminar un elemento
  • 22. Listas Doblemente Enlazadas Eliminar un nodo intermedio de una lista doblemente enlazada  Hacemos que nodo->anterior->siguiente apunte a nodo- >siguiente.  Hacemos que nodo->siguiente->anterior apunte a nodo- >anterior.  Borramos el nodo apuntado por nodo. Moisés Medina Eliminar un elemento
  • 23. Listas Doblemente Enlazadas Eliminar un nodo de una lista doblemente enlazada, caso general  Si nodo apunta a Lista,  Si Lista->anterior no es NULL hacemos que Lista apunte a Lista->anterior.  Si Lista->siguiente no es NULL hacemos que Lista apunte a Lista->siguiente.  Si ambos son NULL, hacemos que Lista sea NULL.  Si nodo->anterior no es NULL, hacemos que nodo- >anterior->siguiente apunte a nodo->siguiente.  Si nodo->siguiente no es NULL, hacemos que nodo- >siguiente->anterior apunte a nodo->anterior.  Borramos el nodo apuntado por nodo. Moisés Medina Eliminar un elemento
  • 24. Pilas Una pila es un tipo especial de lista abierta en la que sólo se pueden insertar y eliminar nodos en uno de los extremos de la lista. Estas operaciones se conocen como "push" y "pop", respectivamente "empujar" y "tirar". Además, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo leído. Moisés Medina Definición
  • 25. Pilas Operaciones básicas con pilas Las pilas tienen un conjunto de operaciones muy limitado, sólo permiten las operaciones de "push" y "pop":  Push: Añadir un elemento al final de la pila.  Pop: Leer y eliminar un elemento del final de la pila. Moisés Medina Operaciones
  • 26. Pilas Push en una pila vacía Partiremos de que ya tenemos el nodo a insertar y, por supuesto un puntero que apunte a él, además el puntero a la pila valdrá NULL: El proceso es muy simple, bastará con que:  nodo->siguiente apunte a NULL.  Pila apunte a nodo. Moisés Medina Push
  • 27. Pilas Push en una pila no vacía De nuevo partiremos de un nodo a insertar, con un puntero que apunte a él, y de una pila, en este caso no vacía: El proceso sigue siendo muy sencillo:  Hacemos que nodo->siguiente apunte a Pila.  Hacemos que Pila apunte a nodo. Moisés Medina Push
  • 28. Pilas Pop, leer y eliminar un elemento  Hacemos que nodo apunte al primer elemento de la pila, es decir a Pila.  Asignamos a Pila la dirección del segundo nodo de la pila: Pila->siguiente.  Guardamos el contenido del nodo para devolverlo como retorno, recuerda que la operación pop equivale a leer y borrar.  Liberamos la memoria asignada al primer nodo, el que queremos eliminar. Moisés Medina Pop