Beruflich Dokumente
Kultur Dokumente
____________________________________________________________________________________________________________________
ESTRUCTURAS DE DATOS
Un programa orientado a objetos usa objetos para trabajar con datos. Estos datos
objeto se organizan en estructuras de datos dependiendo de las funciones que realiza
el programa. Una buena estructura de los objetos es crucial para realizar por ejemplo
operaciones de búsqueda, inserción u borrado de datos.
Los lenguajes de programación orientados a objetos proporcionan estructuras de datos
comunes en librerías. Las clases de estructuras de datos en java son eficientes y
fáciles de usar. Estas clases estándar incluyen arreglos, vectores, pilas, diccionarios y
tablas hash.
ARREGLOS
Un arreglo es una secuencia de variables o componentes del mismo tipo y las cuales
son acezadas mediante un índice que en java empieza desde cero. El tamaño de un
arreglo se fija cuando este es creado. El uso de un índice que cae fuera de rango del
tamaño de un arreglo produce una excepción en tiempo de ejecución del tipo:
ArrayIndexOutOfBoundsException. Todo arreglo es un objeto de la clase Objet, por
tanto cualquier método de la clase Objet puede ser invocado por un arreglo.
Un tipo array es declarado y creado en java mediante la sintaxis:
Tipo nom_array = new tipo [tamaño]
Para obtener la longitud de un arreglo se utiliza
Nom_array.length
Java soporta arreglos multidimencionales. Por ejemplo, la expresión cliente [ ][ ] es un
tipo que representa un arreglo de dos dimensiones que contendrá elementos de tipo
cliente. La declaración y creación de un arreglo bidimensional se realiza de la misma
forma que para los arreglos normales. Por ejemplo:
Cliente [ ] [ ] man = new Cliente[3 ][20 ]
i
Alberto León Aparicio Algoritmos y Estructuras de Datos Estructuras de datos
____________________________________________________________________________________________________________________
VECTORES
Un vector organiza sus elementos al igual que un arreglo; en una secuencia y de igual
forma se accesa a ellos mediante un índice.
La diferencia sustancial entre un array y un vector es que el arreglo es fijo y no puede
cambiar su tamaño una vez que ha sido creado a diferencia del vector que puede
expandirse o contraerse dinámicamente en respuesta a inserciones o a borrado de
objetos en el. Otra diferencia corresponde a cerca de sus tipos de elementos, mientras
los elementos de un arreglo pueden ser valores de un tipo primitivo, un objeto vector
puede trabajar con objetos de diferentes tipos como elementos de el.
Para acceder a los elementos de un vector se utiliza el método elemental (índice). La
clase vector extiende la clase Objet e implementa las interfaces Cloneable y
Serializable. La clase vector define métodos para inserción, eliminación y búsqueda de
objetos en vectores. Un objeto vector utiliza la noción size para denotar el número de
objetos que actualmente tiene.
Un vector es creado utilizando cualquiera de sus siguientes constructores:
Vector()
Vector(int capacidad)
Vector(int capacidad, int incremento)
El primero es por default, el segundo crea un tamaño definido y el tercero define un
tamaño y un incremento.
ii
Alberto León Aparicio Algoritmos y Estructuras de Datos Estructuras de datos
____________________________________________________________________________________________________________________
COLAS
Una cola es una estructura de datos donde los elementos que se almacenan se van
acomodando de forma tipo FIFO. Una cola siempre añade un elemento al final de la
lista y remueve un elemento del principio o frente de dicha lista.
La funcionalidad FIFO de una cola puede ser implementada con los métodos de
instancia de la clase Vector tales como: addElementObjet(Object obj) que añade un
objeto obj al final de un vector y removeElementAt(0) que remueve el primer elemento
y decrementa el tamaño de un vector en uno. Por lo anterior decimos que se puede
usar una instancia de una clase vector como una cola.
COLAS DE PRIORIDAD
Una cola de prioridad es un tipo de datos abstracto que almacena un conjunto de
datos que poseen una llave perteneciente a algún conjunto ordenado, y permite
insertar nuevos elementos y extraer el máximo (o el mínimo, en caso de que la
estructura se organice con un criterio de orden inverso).Dos formas simples de
implementar colas de prioridad son:
o Inserción: O(n)
o Extracción de máximo: O(1)
o Inserción: O(1)
o Extracción de máximo: O(n)
o PILAS
PILAS
La clase Stack del paquete java.util extiende la clase Vector con métodos de instancia
que soporta el tipo LIFO. Cuando un objeto es puesto en la pila es colocado en la parte
de arriba del stack y cuando un objeto es removido es el que esta en mas arriba.
La clase Stack define el constructor Stack(), esta clase hereda los métodos public y
protected de la clase Vector. La propiedad LIFO de un Stack es soportada con los
métodos push(Object obj) y pop para colocar y remover el objeto que esta en el tope
iii
Alberto León Aparicio Algoritmos y Estructuras de Datos Estructuras de datos
____________________________________________________________________________________________________________________
de la pila. El método peek() de la clase Stack accesa al elemento que esta en el tope
de la pila sin quitarlo de ella.
LISTAS LIGADAS
Los elementos que conforman un lista ligad son llamados nodos los cuales contienes
información propia y un enlace a su sucesor (liga). Existen dos tipos de ligas:
indexadas y referenciadas.
Los elementos de un array o vector pueden ser usados como una lista de nodos
ligados. El índice del primer nodo en la lista ligada es mantenido en una variable
(heder). Los nodos en la lista ligada pueden ser acezados a partir de header y los
indices contenidos en los campos liga de los nodos.
HEAPS
Un heap es un árbol binario de una forma especial, que permite su almacenamiento en
un arreglo sin usar punteros.
Un heap puede utilizarse para implementar una cola de prioridad almacenando los
datos de modo que las llaves estén siempre ordenadas de arriba a abajo (a diferencia
iv
Alberto León Aparicio Algoritmos y Estructuras de Datos Estructuras de datos
____________________________________________________________________________________________________________________
TDA Cola
Una cola es un tipo especial de lista en la cual los elementos se indertan en un extremo (el
posterior) y se suprimen en el otro (el anterior o el frente). Las colas se conocen tambien como
FIFO (first-in firts-out) o listas “primero en entrar, primero en salir”. Las operaciones para
una cola son análogas a las de las pilas; las diferencias sustanciales consisten en que las
inserciones se hacen al final de la lista, y no al principio, y en que la terminología tradicional
para las colas y listas no es la misma. Se usaran las siguientes operaciones con colas:
1. ANULA(C) convierte la cola C en una lista vacia.
2. FRENTE(C) es una funcion que devuelve el valor del primer elemento de la cola C.
FRENTE(C) se puede escribir en funcion de operaciones con listas, como
RECUPERA(PRIMERI(C),C).
3. PONE_EN_COLA(x,C) inserta el elemento x al final de la cola C. En funcion de
operaciones con listas, PONE_EN_COLA(x,C) es INSERTA(x,FIN(C),C).
4. QUITA_DE_COLA (C) suprime el primer elemento de C; es decir,
QUITA_DE_COLA(C) es SUPRIME(PRIMERO(C),C).
5. VACIA(C) devuelve verdadero si, y solo si, C es una cola vacia.
Saca_cliente
Frente
Cliente 2
Cliente 6
Cliente 11
Cliente 5
Cliente 28
Cliente 13
Cliente 9
Inserta_cliente