Cómo ordenar una lista

Esta es una pregunta que me surgió al estar diseñando una lista reordenable por el usuario. Es un tema básico, pero como me tardé en recordar cómo se hacía, anexo los pasos.

 

ID

Texto

Sig

Ant

1

a

2

-1

2

b

3

1

3

c

4

2

4

d

5

3

5

e

6

4

6

f

7

5

7

g

8

6

8

h

9

7

9

i

10

8

10

j

1000

9

Esta es una lista.

 

El primer registro tendrá esta forma.

ID

Texto

Sig

Ant

1

a

1000

-1

 

Para insertar un registro después de un registro “base”, haremos lo siguiente:

 

base.sig = insertado.id

insertado.sig = base.sig

 

base+ 1.ant = insertado.id

insertado.ant = base + 1.ant

 

Para borrar un registro, haremos lo siguiente:

 

borrado – 1.sig = borrado.sig

borrado + 1.ant = borrado.ant

Y luego borramos el registro.

 

Para mover un registro para que quede después de un registro “base”, haremos lo siguiente:

 

base.sig = movido.id

movido.sig = base.sig

movido – 1.sig = movido.sig

 

base + 1.ant = movido + 1.ant

movido.ant = base.id

movido + 1.ant = movido.ant

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*