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 359<br />

2. Leer o modificar el k-ésimo elem<strong>en</strong>to de la lista.<br />

3. Insertar o eliminar un elem<strong>en</strong>to <strong>en</strong> la k-ésima posición.<br />

4. Insertar o eliminar un elem<strong>en</strong>to <strong>en</strong> una lista ord<strong>en</strong>ada.<br />

5. Combinar dos o más listas <strong>en</strong> una única lista.<br />

6. Dividir una lista <strong>en</strong> dos o más listas.<br />

7. Ord<strong>en</strong>ar los elem<strong>en</strong>tos de una lista de acuerdo con un criterio dado.<br />

8. Insertar o eliminar un elem<strong>en</strong>to <strong>en</strong> la k-ésima posición de una lista de<br />

acuerdo con un criterio dado.<br />

9. Buscar si aparece un valor dado <strong>en</strong> algún lugar de una lista.<br />

Como ejemplo de implem<strong>en</strong>tación de algunas de estas operaciones, a continuación<br />

se pres<strong>en</strong>tan procedimi<strong>en</strong>tos que eliminan o insertan un nuevo elem<strong>en</strong>to<br />

<strong>en</strong> una lista.<br />

El procedimi<strong>en</strong>to EliminarK<br />

En primer lugar, se pres<strong>en</strong>ta un procedimi<strong>en</strong>to que elimina el k-ésimo elem<strong>en</strong>to<br />

de una lista (que se supone de longitud mayor que k). En el caso <strong>en</strong><br />

que k = 1, podemos utilizar el procedimi<strong>en</strong>to EliminarPrimero desarrollado<br />

anteriorm<strong>en</strong>te, por lo que <strong>en</strong> este apartado nos restringimos al caso k > 1.<br />

El primer esbozo de este procedimi<strong>en</strong>to es muy s<strong>en</strong>cillo:<br />

Localizar el nodo (k-1)-ésimo de lista<br />

Asociar el puntero sigui<strong>en</strong>te del nodo (k-1)-ésimo al nodo (k+1)-ésimo<br />

El proceso se describe gráficam<strong>en</strong>te <strong>en</strong> la figura 17.4.<br />

Emplearemos un método iterativo para alcanzar el (k − 1)-ésimo nodo de la<br />

lista, de modo que se irá avanzando nodo a nodo desde la cabeza (el primer nodo<br />

de la lista) hasta alcanzar el (k − 1)-ésimo usando un puntero auxiliar apAux.<br />

Para alcanzar el nodo (k−1)-ésimo, se empezará <strong>en</strong> el primer nodo, mediante<br />

la instrucción<br />

listaAux:= lista;<br />

y luego se avanzará iterativam<strong>en</strong>te al segundo, tercero, . . . , (k − 1)-ésimo ejecutando

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

Saved successfully!

Ooh no, something went wrong!