You are on page 1of 10

Algortmica y estructura de datos II

Pila Recursiva

Pila Recursiva
La definicin recursiva de pila esta dada por :

Pila n elementos= elemento de la cima + Pila n -1 elementos


Se debe tener presente que los elementos se insertan o se retiran solo por uno de los extremos (a pesar que este hecho no se refleje en la definicin) .

La pila recursiva se representa por una sola clase

Visin del conceptor : Diseo del TAD cPilaRec Nombre de la Clase : cPilaRec Descripcin genrica Una pila es secuencia de elementos donde estos se insertan y se retiran solo por un extremo. En un momento dado el acceso se ve limitado al elemento mas recientemente ingresado. recursivamente se define como
Pila n elementos= elemento de la cima+Pila n-1 elementos Descripcin Formal Nombre : cPilaRec Elementos aElemento: Ojecto aSubPila: cPilaRec
cPilaRec -aElemento -aSubPila
cPilaRec() Elemento SubPila EsVacia() Apilar() DesApilar() Cima()

Operaciones
Operaciones Primitivas cPilaRec cPilaRec Elemento SubPila EsVacia Apilar Cima : : Objeto : cPilaRec : -> cPilaRec -> Objeto -> cPilaRec -> booleano -> cPilaRec -> Objeto : Objeto, cPilaRec -> cPilaRec

Operaciones Derivadas
: Objeto, cPilaRec -> cPilaRec : cPilaRec

Desapilar : cPilaRec

Visin del Implementador :


Nombre de la Clase : cPilaRec
[publico] clase cPilaRec Inicio
// elementos

[privado] aElemento: Objeto [privado] aSubPila : cPilaRec


// Operaciones Primitivas

// Constructor: construye una pila recursiva vaca [publico] cPilaRec() Inicio

aElemento nulo aSubPila nulo Fin

// Constructor: construye unavPila recursiva con elementos

[publico] cPilaRec( pElemento: objeto, pSubPila: CPilaRec)

Inicio aElemento pElemento aSubPila pSubPila Fin


// Propiedad

[publico]

Elemento: Objeto Inicio Obtener Inicio devolver aElemento fin Colocar Inicio
// value es un valor ingresado por el usuario

aElementovalue fin Fin

publico] SubPila: cPilaRec Inicio Obtener Inicio devolver aSubPila fin Colocar Inicio
// value es un valor ingresado por el usuario

aSubPilavalue fin Fin

[publico] EsVacia(): booleano


//operacin que nos permite saber si la pila recursiva esta vaca

Inicio Si ( Elemento nulo) devolver verdadero // no tiene elementos Caso Contrario devolver falso // tiene elementos fin

[publico] Apilar(Dato:Objeto)
// Insertar un objeto en la cima de la pila

Inicio aSubPila new CpilaRec( aElemento, aSubPila) aElemento Dato fin


[publico] DesApilar()
// Eliminar un objeto en la cima de la pila

Inicio Si (no EsVacia()) aElemento aSubPila.aElemento aSubPila aSubPila.aSubPila) fin

[publico] cima(): objeto //indica el elemento de la cima de la pila recursiva Inicio Si(EsVacia()) devolver nulo Caso Contrario devolver Elemento fin

You might also like