20.03.2015 Views

Tabla de Contenidos

Tabla de Contenidos

Tabla de Contenidos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

1.3. LISTAS DOBLEMENTE LIGADAS 15<br />

Figura 1.10: Listas con centinelas<br />

List.Insert(x)<br />

x.next := head<br />

if head ≠ nil<br />

then head.prev := x<br />

head := x<br />

x.prev := nil<br />

El tiempo <strong>de</strong> ejecución <strong>de</strong> Insert es O(1) en el pero caso.<br />

El siguiente procedimiento elimina un elemento x <strong>de</strong>s<strong>de</strong> una lista. En el se supone que x es un<br />

puntero directo al objeto que se quiere eliminar. Si en vez <strong>de</strong>l puntero, sólo se tiene la clave <strong>de</strong>l<br />

objeto, este <strong>de</strong>be ser primero encontrado en la lista y luego eliminado.<br />

List.Delete(x)<br />

if x.prev ≠ nil<br />

then x.prev.next := x.next<br />

else head := x.next<br />

if x.next ≠ nil<br />

then x.next.prev := x.prev<br />

El tiempo <strong>de</strong> ejecución <strong>de</strong> Delete es O(1) en el peor caso.<br />

Centinelas<br />

Si en el código <strong>de</strong> Delete pudiésemos ignorar las condiciones <strong>de</strong> bor<strong>de</strong>, la implementación<br />

resultaría en algo como<br />

List.Delete(x)<br />

x.prev.next := x.next<br />

x.next.prev := x.prev<br />

que no funcionaría por ejemplo en el caso <strong>de</strong> que la lista se encontrara vacía.<br />

Un centinela es un objeto tonto que nos sirve para simplificar las condiciones <strong>de</strong> bor<strong>de</strong> en una<br />

lista (en general en una estructura ligada por punteros). Supongamos que a nuestra lista le agregamos<br />

un objeto nil que representa a nil pero tiene todos los atributos <strong>de</strong> los otros objetos <strong>de</strong> la lista. La

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

Saved successfully!

Ooh no, something went wrong!