operaciones con pilas

Iniciado por hartouki, 17 Agosto 2009, 12:00 PM

0 Miembros y 1 Visitante están viendo este tema.

hartouki

hola muy buenas a tod@s
estoy haciendo unas operaciones básicas usando pilas quiero hacer lo siguiente:
1)función recursiva que me devuelve el mayor de los elementos almacenados en una pila sin modificar su contenido.
2)procedimiento recursivo que me imprime el contenido de la pila sin modificar sus datos en el mismo orden que están almacenados
3)procedimiento recursivo que me elimine todas las apariciones de un
elemento x.
todas estas operaciones se hace a nivel de utilización es decir sin suponer
nada acerca de la estructura del tipo pila.(sin array o memoria dinámica)
hicé las siguientes operaciones pero no estoy seguro si están bien asi
si tenéis una versión mejor estaré agradecido si me lo podéis facilitar:
1)función máximopila(E/S p:Tipopila):

    variables :
  may ,e : natural
inicio:
may=0.
si (esvacia(p)) entonces //si la pila es vacia
  resultado=0; //termina la función qui
sino
e=sacarp(p). //me devuelve el elemento que está en la cima
borrarp(p), // si pongo el borrar aqui voy a modificar el contenido de la pila  y lo que se pide es sin modificar el contenido de los datos asi pasa con todos los procedimientos
si (e>may) entonces
     may=e;
sino
   resultado=maximopila(p)
finsi
resultado=mayor

2)proc escribirpila(E/S p:Tpila)

   varibales
  e : tnatural
incio
  si esvacia(p) entonces
    escribir (la pila está vacia )
  sino
   e=Sacarp(p)
   escribir(e)
   escribirpila(p)



3) proc eliminarp(E/S p :tpila,E x :natural)
inicio
  si esvacia(p) entonces
     escribir ( no se puede eliminar datos de una pila vacia)
  sino
    e=Sacarp(p)
    si e=x entonces
        borrarp(p)
    sino
      eliminarp(p,e)
   Fs
fin     


Muchisima gracias de antemano
saludos