0 évaluation0% ont trouvé ce document utile (0 vote)
509 vues6 pages
Este documento presenta preguntas y respuestas sobre listas enlazadas. Explica que una lista enlazada está compuesta de nodos, cada uno con un campo de datos y un enlace al siguiente nodo. Las listas pueden ser simplemente o doblemente enlazadas, y circular o no. También describe operaciones comunes como insertar, eliminar y recorrer nodos, así como conceptos como lista vacía y cabecera/cola. Incluye algoritmos detallados para estas operaciones.
Description originale:
Custionario sobre la listas encadenadas contestado con libro Joyanes
Este documento presenta preguntas y respuestas sobre listas enlazadas. Explica que una lista enlazada está compuesta de nodos, cada uno con un campo de datos y un enlace al siguiente nodo. Las listas pueden ser simplemente o doblemente enlazadas, y circular o no. También describe operaciones comunes como insertar, eliminar y recorrer nodos, así como conceptos como lista vacía y cabecera/cola. Incluye algoritmos detallados para estas operaciones.
Este documento presenta preguntas y respuestas sobre listas enlazadas. Explica que una lista enlazada está compuesta de nodos, cada uno con un campo de datos y un enlace al siguiente nodo. Las listas pueden ser simplemente o doblemente enlazadas, y circular o no. También describe operaciones comunes como insertar, eliminar y recorrer nodos, así como conceptos como lista vacía y cabecera/cola. Incluye algoritmos detallados para estas operaciones.
CUESTIONARIO SOBRE LISTAS ENLAZADAS (MEMORIA DINMICA)
1. Qu es una lista enlazada?
Es una coleccin de elementos (denominados nodos) dispuestos uno a continuacin de otro, cada uno de ellos conectado al siguiente por un enlace o referencia 2. Qu partes (campos) componen cada nodo de una lista enlazada? Dibuja o pega una imagen representativa de una lista enlazada y los campos que incluye cada nodo. Est compuesta por 2 partes, la primera parte contiene la informacin y es, por consiguiente, un valor de un tipo genrico (denominado Dato, TipoElemento, Info, etc.), y la segunda parte es una referencia (denominado enlace o sgte) que apunta (enlaza) al siguiente elemento de la lista.
3. Cmo se clasifican las listas enlazadas? Explica brevemente cada tipo. -Listas simplemente enlazadas. Cada nodo contiene un nico enlace que lo conecta al siguiente nodo o nodo sucesor. -Listas doblemente enlazadas. Cada nodo contiene dos enlaces, uno a su nodo predecesor y otro a su nodo sucesor. -Lista circular simplemente enlazada. Una lista enlazada simplemente en la que el ltimo elemento (cola) se enlaza al primer elemento (cabeza) de tal modo que la lista puede ser recorrida de modo circular (en anillo). -Lista circular doblemente enlazada. Una lista doblemente enlazada en la que el ltimo elemento se enlaza al primer elemento y viceversa. Esta lista se puede recorrer de modo circular (en anillo) tanto en direccin directa (adelante) como inversa (atrs).
4. Qu es una lista vaca y cmo se representa? Una lista vaca (no contiene nodos), se representa con el puntero cabeza con nulo (null).
5. Por qu decimos que una lista es una estructura de datos dinmica? El nmero de nodos puede variar rpidamente en un proceso, aumentando por inserciones o disminuyendo por eliminacin de nodos. 6. Por qu decimos que una lista es una estructura de datos lineal?} Los elementos de la lista tienen la propiedad de que sus elementos estn ordenados de forma lineal segn las posiciones que se ocupan en la misma.
7. Cules son las operaciones que generalmente se implementan en el TAD Lista? Inicializacin o creacin. Insertar elementos en la lista. Eliminar elementos de la lista. Buscar elementos de la lista. Recorrer la lista enlazada. Comprobar si la lista est vaca.
8. Escriba en Java la clase Nodo que se utilizar para cada elemento de la Lista. Incluya los mtodos constructores, getDato(), getEnlace() y setEnlace() de acuerdo al ejemplo 8.2 del libro indicado para lectura. Escriba junto a cada mtodo una explicacin clara sobre su funcin (Qu hace?), los tipos de datos que usa, el valor de retorno, etc.
9. Para qu se utilizan las referencias cabeza y cola en una lista enlazada? Para representar el frente cabeza y el final cola de una lista 10. Qu significa NULL? Para qu se usa en las listas enlazadas? Una lista vaca (no contiene nodos)
11. Explique paso a paso el algoritmo para insertar un nuevo elemento en la cabeza de la lista. Incluya esquemas o dibujos para apoyar la explicacin. Algoritmo Nodo nuevo; nuevo = new Nodo(entrada); // asigna un nuevo nodo
El campo enlace del nuevo nodo apunta al nodo primero actual de la lista. Algoritmo nuevo.enlace = primero
Se cambia la referencia de primero para que apunte al nodo creado; es decir, primero apunta al mismo nodo al que apunta nuevo. Algoritmo primero = nuevo; Se cambia la referencia de primero para que apunte al nodo creado; es decir, primero apunta al mismo nodo al que apunta nuevo.
En este momento, el mtodo de insertar termina su ejecucin, la variable local nuevo desaparece y slo permanece la referencia al primer nodo de la lista: primero.
12. Explique paso a paso el algoritmo para insertar un nuevo elemento al final (cola) de la lista. Incluya esquemas o dibujos para apoyar la explicacin.
ultimo.enlace = new Nodo(entrada); ultimo = ultimo.enlace; La primera sentencia crea un nodo, inicializando su dato a entrada. El campo enlace del ltimo nodo queda apuntando al nodo creado y as se enlaza, como nodo final, a la lista y la ltima sentencia pone la variable ltimo al nuevo ltimo nodo de la lista. La operacin es un mtodo de la clase Lista. 13. Explique paso a paso el algoritmo para insertar un nuevo elemento entre dos nodos de la lista. Incluya esquemas o dibujos para apoyar la explicacin. El algoritmo para la operacin insertar entre dos nodos (n1, n2) requiere las siguientes Etapas: Algoritmo nuevo = new Nodo(entrada); 1. Crear un nodo con el nuevo elemento y el campo enlace a null. La referencia al nodo se asigna a nuevo.
Algoritmo nuevo.enlace = anterior.enlace 2. Hacer que el campo enlace del nuevo nodo apunte al nodo n2, ya que el nodo creado se ubicar justo antes de n2.
3. La variable referencia anterior tiene la direccin del nodo n1, y eso exige hacer que anterior.enlace apunte al nodo creado.
14. Explique paso a paso el algoritmo para eliminar un elemento de una lista. Incluya esquemas o dibujos para apoyar la explicacin. public void eliminar (Elemento entrada) { Nodo actual, anterior; boolean encontrado;
inicializa los apuntadores actual = primero; anterior = null; encontrado = false;
Bsqueda del nodo que contiene el dato. Se ha de obtener la direccin del nodo a eliminar y la direccin del anterior. while ((actual != null) && (!encontrado)) { encontrado = (actual.dato == entrada); //con objetos: actual.dato.equals(entrada) if (!encontrado) { anterior = actual; actual = actual.enlace; } } El enlace del nodo anterior que apunte al siguiente nodo del cual se elimina. if (actual != null) { Distingue entre que el nodo sea el cabecera, o del resto de la lista if (actual == primero) { primero = actual.enlace; } else { anterior.enlace = actual.enlace; } actual = null; // no es necesario al ser una variable local } } Por ltimo, la memoria ocupada por el nodo se libera. Es el propio sistema el que libera el nodo, al dejar de estar referenciado. NOTA: Si el nodo a eliminar es el cabeza de la lista (primero), se modifica primero para que tenga la direccin del siguiente nodo. 15. Explique paso a paso el algoritmo para recorrer (visitar) todos los elementos de una Lista. Incluya esquemas o dibujos para apoyar la explicacin.