Académique Documents
Professionnel Documents
Culture Documents
ndice general:
1.
Representacin Eficaz de una EDA Lineal
2.
Implementacin de Pila: La Clase ArrayPila
3.
Implementacin de Cola: La Clase ArrayCola
4.
I l
Implementacin
i d
de Li
Lista Con
C Punto
P
de
d Inters:
I
La
L Clase
Cl
LEGListaConPI
Germn Molt
Escuela Tcnica Superior de Ingeniera Informtica
Uni ersidad Politcnica de Valencia
Universidad
Objetivos y Bibliografa
Desarrollar las implementaciones ms eficientes de las
Estructuras de Datos lineales Pila, Cola y Lista con Punto
de Inters.
Bibliografa Principal:
1.
2.
3.
4
4.
tope
D
C
y
implementa
p
el interfaz Pila.
La clase ArrayPila
Atributos principales:
Un array para almacenar los elementos de la Pila.
Una
U capacidad
id d iinicial
i i l para ell vector.
t
Un marcador al tope de la pila (la posicin en el vector del ltimo
elemento insertado), inicialmente valdr -1.
tope
7
elArray
lA
public ArrayPila () {
elArray=
y (E[])
( []) new Object[CAPACIDAD
j [
_POR_DEFECTO];
]
tope = -1;
}
public void apilar(E x) {
if ( tope + 1 == elArray.length) duplicarArray();
tope++; elArray[tope] = x;
Qu ocurre si se trata de apilar un nuevo
elemento
l
t y elArray
lA
est
t completo?
l t ?
}
8
public E tope() {
return elArray[tope];
}
@SuppressWarnings( unchecked )
@SuppressWarnings("unchecked")
elArray = nuevoArray;
}}
El mtodo toString() muestra los elementos en orden inverso al que fueron
insertados
d en la
l Pila,
P l es decir,
d
ell orden
d en ell que seran
desapilados.
d
l d
10
Problemas:
S l i
Solucin:
fin
fin
fin
fin
14
package librerias.estructurasDeDatos.lineales;
i
import
lib i
librerias.estructurasDeDatos.modelos.*;
D D
d l *
public class ArrayCola<E> implements Cola<E> {
protected E elArray[];
protected int fin, primero, tallaActual;
protected static final int CAPACIDAD_POR_DEFECTO
p
_
_
= 200;
15
primero
primero
public ArrayCola(){
elArray = (E[]) new Object[CAPACIDAD_POR_DEFECTO];
tallaActual = 0;
primero = 0;
fin = -1;
}
@SuppressWarnings("unchecked")
La circularidad se implementa
p
mediante el mtodo incrementa
que nos permitir recorrer la estructura elemento a elemento.
13
16
17
18
Detalles de la Implementacin
Por qu se utiliza esta
LEGListaConPI
estrategia??
PI
Modelo
ant
Implementacin
Caso especial:
C
i l El primer
i
elemento
l
t NO ti
tiene un elemento
l
t
anterior.
20
Simulado
Sim
lad mediante unn nodo
n d ficticio
fictici anteri
anteriorr al primer
rimer nodo.
n d
Esta solucin simplifica los mtodos de insercin y borrado.
La referencia al primer nodo NUNCA ser modificada.
modificada
Detalles de la Implementacin
LEGListaConPI
Lista Vaca:
package librerias.estructurasDeDatos.lineales;
i
import
t librerias.estructurasDeDatos.modelos.*;
lib i
t t
D D t
d l *
public class LEGListaConPI<E> implements ListaConPI<E> {
protected NodoLEG<E> pri,
pri ant,
ant ult;
null
u
PI
Modelo
pri
ant
ult
Implementacin
PI
Modelo
null
pri
ant
ult
Implementacin
21
public LEGListaConPI(){
pri = ult = ant = new NodoLEG<E>(null);
}
public void inicio(){ ant = pri; }
public void fin(){ ant = ult;}
public void siguiente(){ ant = ant.siguiente; }
public boolean esFin(){ return (ant == ult); }
public boolean esVacia(){ return (pri == ult); }
22
24
Cmo se implementara el
mtodo toString?
La clase ArrayDequePila
Permite utilizar la estructura para acceso FIFO (como una Cola) y para
acceso LIFO (como una Pila).
25
27
public
bli ArrayDequePila()
A
D
Pil () { super();}
() }
public void apilar(E x) { push(x);}
public E tope() { return peek(); }
public boolean esVacia() { return (size() == 0); }
}
26
La Clase ArrayDequeCola