You are on page 1of 10
Algorítmica y estructura de datos II Pila Recursiva

Algorítmica y estructura de datos II

Pila Recursiva

Pila Recursiva

La definición 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 definición) .

La pila recursiva se representa por una sola clase

Visión del conceptor : Diseño del TAD cPilaRec

Nombre de la Clase : cPilaRec Descripción genérica

Una pila es secuencia de elementos donde estos se insertan

y acceso se retiran se ve solo limitado por un extremo. al elemento En un mas momento recientemente dado el

ingresado.

recursivamente se define como

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

Descripción Formal

Nombre : cPilaRec

Elementos

aElemento: Ojecto

aSubPila: cPilaRec

cPilaRec

-aElemento

-aSubPila

cPilaRec()

Elemento

SubPila

EsVacia()

Apilar()

DesApilar()

Cima()

Operaciones

   
     

Operaciones Primitivas

 

cPilaRec

:

-> cPilaRec

cPilaRec

: Objeto, cPilaRec -> cPilaRec

Elemento

SubPila

: Objeto : cPilaRec

-> Objeto -> cPilaRec

Operaciones Derivadas

EsVacia

:

-> booleano

Apilar

: Objeto, cPilaRec

-> cPilaRec

Desapilar

: cPilaRec

-> cPilaRec

Cima

: cPilaRec

-> Objeto

Visión del Implementador : Nombre de la Clase : cPilaRec
Visión del Implementador :
Nombre de la Clase : cPilaRec

[publico] clase cPilaRec

Inicio

// elementos
// elementos

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

// Operaciones Primitivas
// Operaciones Primitivas

// Constructor: construye una pila recursiva vacía [publico] cPilaRec()

Inicio

aElemento nulo

aSubPila

nulo

Fin

// Constructor: construye unavPila recursiva con elementos

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

Inicio

aElemento pElemento

aSubPila

Fin

pSubPila

// Propiedad

[publico] Elemento: Objeto Inicio Obtener Inicio devolver aElemento fin Colocar

Inicio

// value es un valor ingresado por el usuario

Fin

aElementovalue

fin

[publico] SubPila: cPilaRec Inicio

Obtener

Inicio devolver aSubPila fin

Colocar

Inicio

// value es un valor ingresado por el usuario

Fin

aSubPilavalue

fin

[publico] EsVacia(): booleano

//operación que nos permite saber si la pila recursiva esta vacía

Inicio Si ( Elementonulo)

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 aSubPilanew CpilaRec( aElemento, aSubPila) aElemento Dato

fin

[publico] DesApilar()

// Eliminar un objeto en la cima de la pila

Inicio Si (no EsVacia()) aElemento aSubPila.aElemento aSubPilaaSubPila.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