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>.
|