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.

372 Capítulo 17. Estructuras de datos recursivas<br />

procedure CrearCola(var cola: tCola);<br />

begin<br />

cola.principio:= nil;<br />

cola.final:= nil<br />

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

Por efici<strong>en</strong>cia <strong>en</strong> la implem<strong>en</strong>tación de los sigui<strong>en</strong>tes procedimi<strong>en</strong>tos resultará<br />

conv<strong>en</strong>i<strong>en</strong>te considerar una lista vacía a aquella cuyo puntero final ti<strong>en</strong>e el valor<br />

nil; esto permitirá que para comprobar si una cola es o no vacía sólo se necesite<br />

evaluar la expresión lógica cola.final = nil. Es trivial escribir el subprograma<br />

que efectúa esta comprobación.<br />

Consulta del primer elem<strong>en</strong>to<br />

Esta operación es idéntica a Cima de una pila, puesto que nos interesa el<br />

cont<strong>en</strong>ido del primer nodo de la cola. Para verificar el nivel de compr<strong>en</strong>sión<br />

sobre el tema, es un bu<strong>en</strong> ejercicio int<strong>en</strong>tar escribirla (sin mirar el análogo para<br />

pilas, como es natural).<br />

Añadir un elem<strong>en</strong>to<br />

En las colas, los elem<strong>en</strong>tos nuevos se sitúan al final y por esta razón es<br />

necesario actualizar el puntero final (y también principio si la cola está vacía).<br />

Un simple gráfico servirá para conv<strong>en</strong>cerse cómo. El diseño de este procedimi<strong>en</strong>to<br />

es el sigui<strong>en</strong>te:<br />

si cola no está vacía <strong>en</strong>tonces<br />

Crear y dar valores al nuevoNodo<br />

Actualizar los punteros y el final de cola<br />

<strong>en</strong> otro caso<br />

Crear y dar valores al nuevoNodo<br />

Actualizar principio y final de cola<br />

La codificación <strong>en</strong> <strong>Pascal</strong> de este diseño podría ser la sigui<strong>en</strong>te:<br />

procedure PonerEnCola(dato: tElem; var cola: tCola);<br />

{Efecto: dato se a~nade al final de cola}<br />

var<br />

nuevoNodo: tApNodo;<br />

begin<br />

New(nuevoNodo);<br />

nuevoNodo^.cont<strong>en</strong>ido:= dato;<br />

nuevoNodo^.sigui<strong>en</strong>te:= nil;

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

Saved successfully!

Ooh no, something went wrong!