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.1. Estructuras recursivas lineales: las listas <strong>en</strong>lazadas 353<br />

var<br />

lista : tLista;<br />

1)<br />

2)<br />

3)<br />

lista<br />

lista<br />

lista<br />

????<br />

nuevoDato<br />

nuevoDato<br />

Figura 17.2. Inserción de un elem<strong>en</strong>to <strong>en</strong> una lista vacía.<br />

Sobre el código anterior debe señalarse que se define tLista como un puntero<br />

a un tipo no definido todavía. Esto está permitido <strong>en</strong> <strong>Pascal</strong> (supuesto que<br />

tal tipo es definido posteriorm<strong>en</strong>te, pero <strong>en</strong> el mismo grupo de definiciones)<br />

precisam<strong>en</strong>te para poder construir estructuras recursivas.<br />

17.1.2 Inserción de elem<strong>en</strong>tos<br />

Supóngase que nuestra lista está iniciada con el valor nil. Para introducir<br />

un elem<strong>en</strong>to nuevoDato <strong>en</strong> ella, habrá que completar la sigui<strong>en</strong>te secu<strong>en</strong>cia de<br />

pasos, que se muestra gráficam<strong>en</strong>te <strong>en</strong> la figura 17.2:<br />

1. En primer lugar, habrá que g<strong>en</strong>erar una variable del tipo tNodo, que ha de<br />

cont<strong>en</strong>er el nuevo eslabón: esto se hace mediante la s<strong>en</strong>t<strong>en</strong>cia New(lista).<br />

2. Posteriorm<strong>en</strong>te, se asigna nuevoDato al campo cont<strong>en</strong>ido del nodo recién<br />

g<strong>en</strong>erado. La forma de esta asignación dep<strong>en</strong>derá del tipo de datos de la<br />

variable nuevoDato.<br />

3. Y por último, hay que anular (con el valor nil) el campo sigui<strong>en</strong>te del<br />

nodo para indicar que es el último de la lista.<br />

Para insertar un nuevoDato al principio de una lista no vacía, lista, se ha<br />

de proceder como se indica (véase la figura 17.3):<br />

1. Una variable auxiliar listaAux se usa para apuntar al principio de la lista<br />

con el fin de no perderla. Esto es:<br />

??<br />

??

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

Saved successfully!

Ooh no, something went wrong!