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