Documentos de Académico
Documentos de Profesional
Documentos de Cultura
12/09/2019
Pila en Java
Una pila es una estructura que nos permite apilar elementos y recopilarlos en el orden
inverso al cual los apilamos mediante operaciones de desapilar.
Esto es lo que se conoce como estructuras LIFO (Last In First Out). De esta manera
una pila suele tener 3 operaciones básicas:
Hemos creado un bucle que nos vaya creando los números y nos hemos apoyado en
la clase Integer y su método .toString() para convertir los números en cadena.
Una vez que tenemos todos los elementos, procedemos al vaciado de la pila. Tendremos
que interactuar sobre la pila hasta que esta esté vacía, cosa que nos dice el método
.empty(). En cada una de las iteraciones extraeremos un elemento de la pila mediante el
método .pop()
1.while (!pila.empty())
2.System.out.println(pila.pop());
Pocas líneas de código que nos ayudan a crear una pila en Java.
2 | Página
Cola en Java
Cola.java
ColaEnlazada.java
3 | Página
Vemos como la clase Cola contiene dos campos, cola y cabecera que apuntan al
principio y al final de la cola. La cabecera la utilizaremos para extraer elementos. Para
insertar utilizaremos la cola.
La operación encolar crea un nodo cuyo sucesor es nulo. Esto es porque añadimos al
final de la cola, es decir, donde apunta el campo cola. Si la cola es vacía la cabecera y la
cola apuntan al mismo objeto Nodo.
4 | Página
Arboles en Java
La estructura de datos árbol al contrario que las listas es una estructura de datos no
lineal. Las listas tienen un orden impuesto en sus elementos teniendo como mucho un
predecesor y un sucesor. Los árboles pueden tener dos o más sucesores.
Veremos ahora aquellos conceptos que nos dan una idea sobre la topología del árbol.
Son los conceptos de camino, longitud y profundidad:
• El camino existente entre dos nodos, es la secuencia de "arcos" que nos llevan,
siguiéndolas de forma consecutiva del primero al segundo. La longitud es el
número de aristas que contiene.
5 | Página
• Altura de un árbol es la profundidad máxima entre todos los nodos extremos del
árbol. Es decir, "la profundidad del nodo más profundo".
Por simplificar el estudio de los árboles veremos el caso de los árboles binarios. Un
árbol binario es un árbol en el que cada nodo tiene 0 ó 2 hijos (el hijo izquierdo y el
derecho). Este árbol podrá ser ordenado si para cada nodo existe un orden lineal para
todos su hijos, es decir, si tenemos el orden "menor que", un árbol será ordenado si para
cada nodo sus hijos son menores que el padre.
Al igual que las listas la forma de definir los árboles es de manera recursiva.
Definiremos inicialmente una clase Nodo que represente cada uno de los nodos del
árbol:
Por simplificar el estudio de los árboles veremos el caso de los árboles binarios. Un
árbol binario es un árbol en el que cada nodo tiene 0 ó 2 hijos (el hijo izquierdo y el
derecho). Este árbol podrá ser ordenado si para cada nodo existe un orden lineal para
todos su hijos, es decir, si tenemos el orden "menor que", un árbol será ordenado si para
cada nodo sus hijos son menores que el padre.
Al igual que las listas la forma de definir los árboles es de manera recursiva.
Definiremos inicialmente una clase Nodo que represente cada uno de los nodos del
árbol:
Cada uno de los objetos de tipo NodoBinario representa una estructura de datos
compuesta por el elemento que se almacena en cada nodo y dos nodos que llamaremos
nodoizq y nododcha. Puesto que los nodos binario pueden tener 0 ó 2 hijos, se
han definido dos tipos de constructores para cubrir los dos casos. El resto de métodos
son para manipular la clase nodo de forma transparente. A partir de esta clase
NodoBinario se define la clase ArbolBinario como sigue:
6 | Página
Notesé que un ArbolBinario como máximo puede tener un hijo, si es el caso usaremos
el constructor con un solo parámetro si no es así utilizaremos el constructor por defecto,
es decir, el constructor sin parámetros.
Vamos a ver cómo se calcularía el tamaño del árbol a partir de esta definición:
Definimos una función auxiliar que calcula el tamaño de un subárbol bajo un nodo. Este
método calcula una longitud 0 si el Nodo es nulo. En otro caso, la longitud será la suma
de los tamaños de los nodos hijos más uno, correspondiente al nodo actual. El método
tamaño llama al método tam_aux con el nodo raiz.
7 | Página
Veremos las distintas formas de recorrer un árbol en el capítulo de Exploración de
árboles
Bibliografía
(Ciberaula http://www.ciberaula.com/cursos/java/)
(SerProgramador https://serprogramador.es/)
8 | Página