09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

17.2. Pilas 365<br />

Añadir un nuevo elem<strong>en</strong>to <strong>en</strong> la cima de la pila<br />

Este procedimi<strong>en</strong>to toma como parámetros una pila y la variable que se va<br />

a apilar; la acción que realiza es la de insertar el objeto como un nuevo nodo al<br />

principio de la pila. La definición de este procedimi<strong>en</strong>to es directa a partir del<br />

método de inserción de un nodo al principio de una lista visto <strong>en</strong> el apartado<br />

anterior.<br />

procedure Apilar(nuevoDato: tElem; var pila: tPila);<br />

{Efecto: nuevoDato se a~nade sobre pila}<br />

var<br />

pilaAux: tPila;<br />

begin<br />

pilaAux:= pila;<br />

New(pila);<br />

pila^.cont<strong>en</strong>ido:= nuevoDato;<br />

pila^.sigui<strong>en</strong>te:= pilaAux<br />

<strong>en</strong>d; {Apilar}<br />

Eliminar la cima de la pila<br />

Para quitar un elem<strong>en</strong>to de la pila sólo debemos actualizar el puntero. La<br />

definición del procedimi<strong>en</strong>to no necesita mayor explicación, ya que es idéntica a<br />

la del procedimi<strong>en</strong>to Eliminar pres<strong>en</strong>tado <strong>en</strong> el apartado 17.1.3.<br />

procedure SuprimirDePila(var pila: tPila);<br />

{PreC.: pila no está vacía}<br />

{Efecto: se suprime el dato de la cima de la pila}<br />

var<br />

pilaAux: tPila;<br />

begin<br />

pilaAux:= pila;<br />

pila:= pila^.sigui<strong>en</strong>te;<br />

Dispose(pilaAux)<br />

<strong>en</strong>d; {SuprimirDePila}<br />

17.2.3 Aplicaciones<br />

Pilas y recursión<br />

Una aplicación importante de las pilas surge al tratar la recursión (véase<br />

el capítulo 10). En efecto, <strong>en</strong> cada llamada recursiva se añade una tabla de<br />

activación <strong>en</strong> una pila (d<strong>en</strong>ominada pila recursiva). Dicha tabla incorpora los<br />

argum<strong>en</strong>tos y objetos locales con su valor <strong>en</strong> el mom<strong>en</strong>to de producirse la llamada.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!