Universidad de Costa Rica
|
|
|
|
|
SelectionSort() para la lista
El objetivo de esta tarea programada es forzarle a usar especificación en lugar de implementación de la clase lista.
Tome la implementación de la lista doblemente enlazada
vista en clase, y agréguele el método
ADH_lst2::move_after() que permite trasladar un valor
de la lista a otra posición.
void ADH_lst2::move_after(
ADH_lst2::iterator from,
ADH_lst2::iterator to ) {
/* resultado
Traslada el valor que está en el sitio denotador por "from"
para que quede después de "to".
- Tanto "to" como "from" deben denotar valores almacenados en "*this".
- Para trasladar un valor al principio de la lista, es necesario ponerlo
después del primero, y luego poner al primero después del segundo.
*/
nodo *t = to._p;
nodo *f = from._p;
if (t==0 || f==0 || t==f) {
return;
}
{ // caso especial: from es el primero de la lista
if (_prm == f) {
_prm = f->next;
}
}
{ // desconecta "from"
nodo *prv; prv = f->prev;
nodo *nxt; nxt = f->next;
if (prv != 0) {
prv->next = nxt;
}
if (nxt != 0) {
nxt->prev = prv;
}
}
{ // enlaza a "from" después de "to"
f->prev = t;
f->next = t->next;
t->next = f;
}
} // ADH_lst2::move_after()
|
Primero debe corregir la implementación de
ADH_lst2::move_after() para luego debe usarla para
implementar el algoritmo de ordenamiento
SelectionSort().
Modifique el algoritmo para que trabaje sobre una lista, en lugar
de trabajar sobre un vector.
Use los
iteradores
de la lista para
especificar
e
implementar
el algoritmo
SelectionSort(), pero evite acceder el
Rep de la
lista. Si lo necesita, implemente también el método
ADH_lst2::move_before().
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
| Tiempo de entrega: | 7 días |
|
|
| Primera etapa: | 3 días | ||
| Modalidad: | En parejas |
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|