LISTA DOBLEMENTE ENLAZADA

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

PILA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
TDA LISTA ESTRUCTURAS DE DATOS.
Unidad 5 Listas Enlazadas Bibliografía: Algoritmos y Estructuras de datos de Aguilar y Martinez. Unidad 9 Autor: Ing Rolando Simon Titiosky.
Listas enlazadas c++ Prof. Franklin Cedeño.
Programación II Listas
Estructuras de datos y algoritmos
Estructura de Datos En C++
Utilización de un TAD Arbol.
Programación y Estructuras de Datos
Operaciones sobre un árbol
9A9A9A9A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
Tema 5 Grafos. Implementación (I)..
Tratamiento de listas en Java
Tema 4 Árboles. Árbol sobre matriz.
Implementación de listas
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Marzo 2007 Lenguajes Visuales Clase III.
Estructuras de Datos Especificación formal de Listas.
Programación II Colas Igor Santos Grueiro.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Colas y Listas Enlazadas
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
ÁRBOLES DE EXPRESION.
Definición Estructura de datos jerárquica (no lineal) que puede representarse como un conjunto de nodos enlazados entre sí por medio de ramas. Formalmente,
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
Estructuras dinámicas de datos, TAD Lista, parte 2
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Listas circulares.
ÁRBOLES BINARIOS DE BÚSQUEDA
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Estructura de Datos y Algoritmos
Árboles binarios de búsqueda
Programación I Técnico Universitario en Web Dpto. de Informática FCFMyN - UNSL -11-
ARBOLES ESTRUCTURAS DE DATOS.
1 Estructuras de Datos Elementales:stacks (pilas), queues (colas), linked lists (listas enlazadas), y rooted trees (árboles con raíz) Agustín J. González.
Estructuras de Datos Dinámicas: Listas Programación I Departamento de Informática Universidad Nacional de San Luis Argentina 2014.
AED3: Algoritmos y Estructuras de Datos 3.  Uno de los conceptos mas utiles en computacion es la pila o stack  Es un conjunto de elementos, en la que:
Pilas y Colas Estructuras de Datos.
TDA PILA ESTRUCTURAS DE DATOS.
Árboles Binarios Estructuras de Datos.
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
Universitarios: Ricardo Gonzales Jimenez Wilfredo Coca Reinaldo Yohan Docente: Lic. Israel Torrez Valverde Tema: Listas doblemente Enlazadas.
Grafos..
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.
Unidad 4: LISTAS.
Punteros, referencias Listas enlazadas Arboles
Estructuras de datos Fundamentos de análisis y diseño de algoritmos.
INSTITUTO TECNOLOGICO DE APIZACO
Algoritmos y Estructuras de datos Listas Doblemente enlazadas
 Introducción  Conceptos El equipo demostrara y mostrara los conceptos, definición y funcionamiento de una las “listas doblemente enlazadas y circulares”
Lic. En C.C. Ann Margareth Meza Rodríguez
R ECORRIDO DE ÁRBOLES BINARIOS POR AMPLITUD O POR NIVELES Elaborado por: Luis Alberto Fonseca Esquivel Eduardo Acosta Casillas.
Listas. Utilización de un TAD Lista. Interfaz del TAD LISTA public interface Lista { void crearNodo (); /*Crea un nuevo nodo en el TadLista*/ int devolverClave.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
M.C. Meliza Contreras González
Laboratorio de programación
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
OPERACIONES CON PILAS DECLARACIÓN O INICIALIZACIÓN DE LA PILA. Stack NombrePila=newStack (max);
Laboratorio de programación Luisa Fernanda Rincón Pérez
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Listas Dinámicas.
UNIDAD 8 Lista Enlazada: Eliminar Deseamos eliminar un elemento llamado elem de la lista enlazada. Es posible que la variable ini sea modificada. main(){
1 ListaUna Lista se define como una serie de N elementos E 1, E 2,..., E N, ordenados de manera consecutiva, es decir, el elemento E k (que se denomina.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada TIPOS ABSTRACTOS DE DATOS TAD Tema: TIPOS ABSTRACTOS DE DATOS TAD Subtema: LISTAS.
Lenguaje de Programación II Prof. Rafael Montenegro B. Carrera: T.S.U en Informática Periodo: 2014-I.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Estructuras de datos y algoritmos
Transcripción de la presentación:

LISTA DOBLEMENTE ENLAZADA

Lista doblemente enlazada Definición Una lista doblemente enlazada es una colección de elementos llamados nodosDE Un nodoDE tiene tres campos: un campo izquierda, un campo dato y un campo derecha. Los campos izquierda y derecha son apuntadores a los nodos ubicados en el lado izquierdo y el derecho de cada nodo

Lista doblemente enlazada 51 99 izq. dato der. izq. dato der. izq. dato der. Se mantiene un nodoDE cabecera, cuyo campo izquierda apunta a null, no tiene valor y cuyo campo derecha apunta al nodoDE que tiene el primer dato El campo derecha del ultimo nodoDE apunta a null

Lista doblemente enlazada Definición Una lista doblemente enlazada es una estructura de datos dinámica que permite almacenar cualquier cantidad de nodos. Tiene la ventaja de que estando en cualquier nodo se puede acceder al nodo que está tanto a la izquierda como a la derecha

Lista doblemente enlazada Definición Las operaciones sobre una lista doblemente enlazada son: Crear listaDE Insertar nodo al inicio Eliminar nodo al inicio Imprimir datos Es una listaDE vacía?

Lista doblemente enlazada Crear lista doblemente enlazada Al crear una listaDE, se crea el nodo cabecera. El nodo cabecera tiene como dato, izquierda y derecha a null.

Lista doblemente enlazada Insertar nodo al inicio( La listaDE está vacía) Se crea un nuevo nodoDE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a null El campo derecha del nodo cabecera pasa de ser null a ser el nodo que estamos insertado 9

Lista doblemente enlazada Insertar nodo al inicio( La listaDE no está vacía) 9 1 9 Se crea un nuevo nodo con el dato que se desee colocar, campo izquierda apuntando al nodo cabecera y campo derecha apuntado al nodo que apunta el campo derecha del nodo cabecera Al campo izquierda del nodo apuntado por derecha del nodo cabecera se le asigna el nodo que estamos insertando Al nodo cabecera se le asigna como derecha al nodo que estamos insertando

Lista doblemente enlazada Eliminar nodo al inicio 1 9 9 Al nodo cabecera se le asigna como derecha, la derecha del primer nodo Al campo izquierda del segundo nodo se le asigna como izquierda el nodo cabecera (Solo si hay más de un nodo)

Lista doblemente enlazada Imprimir datos

Lista doblemente enlazada Está una listaDE vacía? Cuando la lista está vacía el campo derecha de la cabecera es null

Lista doblemente enlazada public class NodoDE { NodoDE izquierda; Object dato; NodoDE derecha; public NodoDE(Object o) izquierda = null; dato = o; derecha = null; }

Lista doblemente enlazada Crear listaDE Al crear una listaDE, se crea el nodo cabecera. El nodo cabecera tiene como dato, izquierda y derecha a null. class ListaC{ Nodo cabecera; ListaC() { cabecera=new Nodo(null); }

Lista doblemente enlazada public boolean esVacia( ) { if (cabecera.derecha==null) return true; else return false; } Está una lista circular vacía? Cuando la lista está vacía el campo derecha de la cabecera es null

Lista doblemente enlazada public void insertarDE(Object o) { if (esVacia()){ NodoDE nuevo = new NodoDE(o); cabecera.derecha=nuevo; nuevo.izquierda=cabecera; nuevo.derecha=null; } Insertar nodo al inicio ( La listaDE está vacía) Se crea un nuevo nodoDE con el dato que se desee colocar, campo izquierda apuntado al nodo cabecera y campo derecha apuntando a null El campo derecha del nodo cabecera pasa de ser null a ser el nodo que estamos insertado

Lista doblemente enlazada else{ NodoDE nuevo = new NodoDE(o); NodoDE primero=cabecera.derecha; nuevo.derecha=cabecera.derecha; nuevo.izquierda=cabecera; primero.izquierda=nuevo; cabecera.derecha=nuevo; } Insertar nodo al inicio ( La listaDE no está vacía) Se crea un nuevo nodo con el dato que se desee colocar, campo izquierda apuntando al nodo cabecera y campo derecha apuntado al nodo que apunta el campo derecha del nodo cabecera Al campo izquierda del nodo apuntado por derecha del nodo cabecera se le asigna el nodo que estamos insertando Al nodo cabecera se le asigna como derecha al nodo que estamos insertando

Lista doblemente enlazada public void eliminarDE() { NodoDE eliminar=cabecera.derecha; NodoDE derechaEliminar=eliminar.derecha; if(esVacia()) System.out.println("LA LISTADE ESTA VACIA"); else{ cabecera.derecha=eliminar.derecha; derechaEliminar.izquierda=cabecera; } Eliminar nodo al inicio Al nodo cabecera se le asigna como derecha, la derecha del primer nodo Al campo izquierda del segundo nodo se le asigna como izquierda el nodo cabecera