Documentos de Académico
Documentos de Profesional
Documentos de Cultura
S002 Esdal 2401 Pilas
S002 Esdal 2401 Pilas
ADT
Ing. Msc. Eddy Miranda Velasquez
Colecciones
Colección:
3-7
Operaciones con Pilas
• push: agregar un elemento en la cima de la pila
push ( item 4)
item 4
item 3 item 3
item 2 item 2
item 1 item 1
Operaciones con Pilas
• pop: remover el elemento que esta en la cima (top) de
la pila (stack)
pop ()
item 4
item 3 item 3
item 2 item 2
item 1 item 1
Operaciones con Pilas
• peek: examina el elemento que esta en la
cima(top) de la pila sin removerlo
item 4
item 3 peek item 4
item 2
item 1
Operaciones con Pilas
• size: numero de elementos en la pila
• isEmpty: verdadero si la pila esta vacia
• toString: string representacion de la pila
item 4 size 4
item 3 isEmpty false
toString “Pila:
item 2
item 4
item 1 item 3
Item 2
item 1”
Abstract Data Type (ADT)
Tipo de Dato Abstracto
Es una colección de datos con las operaciones
sobre los datos.
3-22
Implementando un Interface
• No se puede crear un objeto de la interfaz(clase)
StackADT.
• Para poder crear objetos de tipo Stack, primero
necesitamos crear una clase que implemente la
interfaz proporcionando implementaciones
(código) a cada uno de los metodos abstractos de
la interfaz
Problemas al Implementar Stacks
3-34
Ejemplo: uso de un constructor
para crear un Stack de Strings
ArrayStack<String> s =
new ArrayStack<String>(5);
top
0
s
stack
DEFAULT_CAPACITY = 100
0 1 2 3 4
Code references
Ejemplo: el mismo objeto ArrayStack despues de
que cuatro items fueron insertados(push)
ArrayStack<String> s =
new ArrayStack<String>(5);
top
“s1” “s3”
4
s
stack
DEFAULT_CAPACITY = 100
0 1 2 3 4
Code references
“s0” “s2” 3-36
public class ArrayStack<T> implements StackADT<T> {
3-40
//----------------------------------------------------------
// Agrega el element especifico a la cima de la pila,
// expandiendo la capacidad del arreglo si es necesario
//----------------------------------------------------------
public void push (T dataItem) {
if (top == stack.length)
expandCapacity( );
stack[top] = dataItem;
top++;
}
3-41
// Metodo auxiliar para crear un nuevo arreglo para
// almacenar loscontenidos de la pila con el doble de
// su capacidad
stack = larger;
}
3-42
Implementación de un Stack con un
Array Pop
Pop ()
3-43
// Remueve el element que esta en la cima de la pila y devuelve
// una referencia a el
public T pop( ) {
if (top == 0)
System.out.println(“La Pila esta Vacia” );
top--;
T topItem = stack[top];
stack[top] = null;
return topItem;
}
3-44
Implementación de un Stack
con un Array
Peek ()
// Retorna el elemento que se encuentra en la cima de la pila.
public T peek( ) {
if (top == 0)
System.out.println(“Pila vacia” );
return stack[top-1];
}
// Retorna el numero de elementos de la Pilas
public int size( ) {
return top;
}
3-47
//------------------------------------------------
// Retorna una representacion String en la Pila.
//------------------------------------------------
public String toString( ) {
String result = “Stack:\n";
return result;
}
}
3-48
El uso de Pilas en Computación
3-49
El uso de Pilas en Computación
• Procesadores de texto o editores
• Para evaluar expresiones o strings de
texto para emparejar los parentesis y
llaves.
e.g.
if (a == b) {
c = ((d + e) – f) * (d + e);
}
• To implement undo operations
3-50
• Keeps track of the most recent
El uso de Pilas en Computación
• Procesadores de texto o editores
Para implementar la operaciones undo
3-51
Muchas Gracias
3-52