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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

17.5. Otras estructuras dinámicas de datos 387<br />

*<br />

3 +<br />

4 5<br />

:<br />

- 6<br />

:<br />

7 2<br />

Figura 17.14. Árbol sintáctico de una expresión aritmética.<br />

❡❡ <br />

El lector at<strong>en</strong>to habrá observado que esta notación postfija no coincide con<br />

la definida <strong>en</strong> el apartado 17.2.3; los argum<strong>en</strong>tos de las operaciones aparec<strong>en</strong><br />

cambiados de ord<strong>en</strong>, esto no es problema con operaciones conmutativas<br />

(suma y producto) pero sí <strong>en</strong> las que no lo son.<br />

Este problema se subsana defini<strong>en</strong>do un recorrido <strong>en</strong> postord<strong>en</strong> <strong>en</strong> el que se<br />

visita antes el hijo derecho que el izquierdo.<br />

Finalm<strong>en</strong>te, si se recorre el árbol <strong>en</strong> preord<strong>en</strong> se obti<strong>en</strong>e una expresión prefija<br />

de la expresión, <strong>en</strong> este caso:<br />

: − ∗ 3 + 4 5 : 7 2 6<br />

17.5 Otras estructuras dinámicas de datos<br />

En este último apartado damos una idea de otras aplicaciones de la memoria<br />

dinámica sin pasar al estudio de la implem<strong>en</strong>tación de las mismas.<br />

Listas doblem<strong>en</strong>te <strong>en</strong>lazadas<br />

La implem<strong>en</strong>tación de listas dinámicas mostrada <strong>en</strong> este capítulo adolece de la<br />

imposibilidad de acceder directam<strong>en</strong>te al predecesor de un nodo. Este problema<br />

causó la inclusión de varios casos especiales <strong>en</strong> la implem<strong>en</strong>tación de algunas<br />

operaciones sobre listas, como la inserción o eliminación de nodos intermedios<br />

(véase el apartado 17.1.5).<br />

Una lista doblem<strong>en</strong>te <strong>en</strong>lazada o de doble <strong>en</strong>lace se define de modo similar al<br />

de las listas de <strong>en</strong>lace simple, sólo que cada nodo dispone de dos punteros que<br />

apuntan al nodo anterior y al nodo sigui<strong>en</strong>te:

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

Saved successfully!

Ooh no, something went wrong!