Unidad Nº V Listas Enlazadas

Documentos relacionados
Clases e instancias. Algoritmos y Estructuras de Datos I. Clases e instancias. memoria dinámica.

Tabla de Símbolos. Programación II Margarita Álvarez

Capítulo. Listas, pilas y colas en C. Contenido. Introducción

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS

QUÉ ES UNA CLASE JAVA? ATRIBUTOS (PROPIEDADES O CAMPOS), CONSTRUCTOR Y MÉTODOS. (CU00623B)

Tema 6. Gestión dinámica de memoria

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Principios de Computadoras II

El TAD Grafo. El TAD Grafo

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

PROGRAMACION ORIENTADA A OBJETOS EN C++

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Apuntadores en C y C++

La sintaxis básica para definir una clase es la que a continuación se muestra:

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Clase adicional 2. Estructuras básicas de control. Temas

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Tema 4. Excepciones en Java

Procesadores de lenguaje Tema 6 La tabla de símbolos

Programación estructurada (Introducción a lenguaje C)

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Java Avanzado Facultad de Ingeniería. Escuela de computación.

La Herencia: Teoría (1)

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Tema 2. Memoria Dinámica. 2.1 Datos estáticos y dinámicos

UNIDAD 9. DATOS COMPLEJOS PILAS

Programación Avanzada para Sistemas de Telecomunicación Arrays

Aprender a desarrollar con JavaScript

9.1. Insertar filas en una hoja

Un elemento de cualquier clase llamada Info; Un puntero a un nuevo nodo llamado sig; De tal forma una unión de nodos hace que tengamos una lista:

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

CREAR TABLAS EN BASES DE DATOS CON phpmyadmin. TIPOS DE DATOS BÁSICOS (VARCHAR, INT, FLOAT). INSERTAR FILAS. (CU00840B)

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

Ficha de Aprendizaje N 13

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Anexo. Control de errores

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Temario 2012 para la certificación de MS Excel Nivel Fundamentos Para versiones de Ms Office 2007 y sucesivas

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.

Programación Orientada a Objetos (POO)

ATRIBUTOS DE LOS FICHEROS EN LINUX

La clase String

i2 Cuaderno del Analista

FUNCIONES PHP: DECLARACIÓN Y LLAMADAS. PARÁMETROS, RETURN. EJERCICIOS EJEMPLOS RESUELTOS. (CU00827B)

324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso

Funciones como Subprogramas en C++

Tema 7: Polimorfismo. Índice

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Una base de datos de Access puede estar conformada por varios objetos, los más comunes son los siguientes:

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

Estructuras de control

El patrón Composite (Compuesto) Propósito Componer los objetos a una estructura de jerarquía de relación partetodo.

Preparación de los Documentos de Word para obtener ficheros PDF Accesibles

Fundamentos de Informática

Estructuras de datos. Estructuras de datos

5.3 CREAR FORMULARIOS

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

Tablas Hash y árboles binarios

LABORATORIO ARQUITECTURAS SOFTWARE DE VARIOS NIVELES EN JAVA (I)

Programación orientada a objetos

Programación Java - Ingeniería de Sistemas - UATF 12 Ing. Limber Ruíz Molina

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

APUNTES JAVA ARRAYS (ARREGLOS) Un arreglo es un grupo de posiciones de memoria contiguas. Todas las cuales tienen el mismo nombre y el mismo tipo.

Modulo 11. Clases y Objetos en Java

Estructura de Datos: Archivos

Programación de sistemas

Capítulo 6. Relaciones. Continuar

Estructuras de datos: Pilas, Colas, Listas

Introducción al tipo Vector Cómo guardar una colección de datos conceptualmente relacionados? - almacenar los 100 primeros números primos, - al

VBA. Visual Basic para Aplicaciones. Guía 1. Visual Basic para Aplicaciones en Office 1

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

CÓMO INGRESAR A SU CORREO INSTITUCIONAL?

Ejercicios Prácticos y Teóricos Diagramas de interacción y de UML a código Java

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.

Tema: Arreglos de Objetos en C++.

Objetivo de aprendizaje del tema

Estructuras de datos: Pilas, Colas, Listas

11. Algunas clases estándar de Java (II)

Herramientas para investigadoras e investigadores sociales

Apuntadores (Punteros)

Conocimientos previos

14. ÁRBOLES Fundamentos y terminología básica

TAD Lineales: Pila, Cola y Lista

15. Parámetros o argumentos

Tema 2 Introducción a la Programación en C.

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Estructura de Datos. TDA: Listas. Primer Semestre, Indice. Tipos de estructura de datos lineales

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Pasos a seguir para crear una aplicación visual en el lenguaje de programación Java con Netbeans IDE.

Lenguaje C [Apuntadores y arreglos]

Segunda práctica de Programación 2

Formularios. Contenido TECNOLOGÍA WORD

MANUAL DE USUARIO PARA OPERADORES SISTEMA DE GESTIÓN DOCUMENTARIO DE LA UNT

Transcripción:

Instituto Universitario Politécnico Santiago Mariño Unidad Nº V Listas Enlazadas

Lista Enlazadas Es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta al siguiente elemento por enlace o referencia. La idea básica consiste en construir una lista cuyos elementos, llamados nodos, se componen de dos partes o campos: la primera parte o campo contiene la información y es, por consiguiente, un valor de un tipo genérico (denominado Dato, TipoElemento, Infor, etc.), y la segunda parte o campo es una referencia (enlace o sgte) que apunta al siguiente elemento de la lista.

Lista Enlazadas en en en null Diferentes representaciones gráficas del último nodo de una lista

Clasificación de las Listas Enlazadas Listas Simplemente Enlazadas, cada nodo contiene un único enlace que conecta ese nodo al nodo siguiente o nodo sucesor. La lista es eficiente en recorridos directos (adelante). Listas Doblemente Enlazadas, cada nodo contiene dos enlace, uno a su nodo predecesor y el otro a su nodo sucesor. La lista es eficiente tanto en recorrido directo (adelante) como en recorrido inverso (atrás).

Clasificación de las Listas Enlazadas Lista Circular Simplemente Enlazada, es aquella en la que el último elemento (cola de la lista) se enlaza al primer elemento (cabeza de la lista), de tal modo que la lista puede ser recorrida de modo circular (en anillo). Lista Circular Doblemente Enlazada, tiene las características de las lista doblemente enlazadas y listas circulares. El último nodo se enlaza o apunta a la cabeza de la lista, todos los nodos enlazan al nodo anterior y al siguiente.

Operaciones en Listas Enlazadas Una lista enlazada requiere unos controles para la gestión de los elementos contenidos en ellas. Estos controles se manifiestan en forma de operaciones que tendrán las siguientes funciones: Definición de la clase Nodo y referencia a Nodo. Inicialización o creación. Insertar elementos en una lista. Eliminar elementos de una lista. Buscar elementos de una lista (comprobar la existencia de elementos en una lista). Recorrer una lista enlazada (visitar cada nodo de la lista). Comprobar si la lista está vacía.

Pasos para la construcción de una lista La creación de una lista enlazada entraña la definición de clases, que pueden descomponerse en los siguientes pasos: 1. Definir la clase Nodo (opcionalmente, definir la clase Elemento). 2. Definir la clase Lista, con la variable instancia referencia a Nodo cabeza o primero. 3. Definir el método constructor de Lista que inicialice primero a null, lista vacía. 4. Definir el método CrearLista(), de tal forma que cree iterativamente el primer elemento (primero) y los elementos sucesivos de una lista enlazada simplemente. 5. Repetir hasta que no haya más entrada para el elemento.

Definición de un nodo en Java Una lista enlazada se compone de una serie de nodos enlazados mediante referencias. Cada nodo es una combinación de dos partes: un tipo de dato (entero, real, doble, carácter o referencias) y un enlace (referencia) al siguiente nodo. En Java se puede definir un nuevo tipo de dato, una clase, para contener las dos partes citadas. Class Nodo{ int info; Nodo siguiente; public Nodo(int dato){ info = dato; siguiente = null;

Definición de un nodo en Java Dado que los tipo de datos que se puede incluir en una lista pueden ser de cualquier tipo (enteros, dobles, caracteres o cualquier objeto), con el fin de que el tipo de dato de cada nodo se pueda cambiar con facilidad, se puede definir una clase Elemento como una generalización del tipo de dato de cada campo, en cuyo caso se utiliza una referencia a Elemento dentro de la estructura de nodo, como se muestra a continuación: Class Elemento{ // Class Nodo{ Elemento info; Nodo siguiente;

Package ListaEnteros; Definición de un nodo en Java Public class Nodo{ int dato; Nodo enlace; public Nodo(int x){ dato = x; enlace = null; public Nodo(int x, Nodo n){ dato = x; enlace = n; El segundo constructor de Nodo enlaza el nodo creado con otro.

Definición de una Lista en Java El siguiente paso para construir la lista es definir la clase Lista con la variable instancia primero que apuntará al primer elemento de la lista: Public class Lista{ Private Nodo primero; public Lista(){ //.. primero = null; La referencia primero (puede tener cualquier otro nombre representativo) se ha inicializado a un valor nulo, lo que implica que la lista está vacía (no tiene elementos).

Definición del método CrearLista en Java En el método CrearLista() se añaden elementos a la lista, para ello hay que crear un nodo con un valor correspondiente al campo dato y asignar dicho nodo a primero: Public Lista CrearLista(){ primero = new Nodo(19); Primero 19 null La referencia primero apunta al nuevo elemento, que se inicializa a 19. El campo enlace del nuevo elemento toma el valor nulo, por no haber un nodo siguiente.

Definición del método CrearLista en Java La operación de crear un nodo se puede hacer un método al que se pasa el valor del campo dato y del campo enlace. Si ahora se desea añadir un nuevo elemento con un valor 61, y situarlo en el primer lugar de la lista, se escribe simplemente: Primero = new Nodo(61, primero); Primero 61 19 Null

Ejercicio: Creación iterativa de una lista Public Lista CrearLista(){ Primero = null; for(int i = 0; i <= 5; i++){ Primero = new Nodo(i, primero); return this;

Ejercicio: Insertar elemento a la cabeza de la lista public Lista InsertarCabezaLista(int dato){ Nodo nuevo; nuevo=new Nodo(dato); nuevo.siguiente = primero; primero = nuevo; return this;

Ejercicio: Mostrar los elementos de una lista public void MostrarLista(){ Nodo n; n = primero; System.out.println("Los valores que contiene la lista son:"); while(n!= null){ System.out.println(n.info); n = n.siguiente;

Fuentes Joyanes, L., Zahonero, I. (2002). Programación en Java 2. Madrid: McGrawHill.