void imprimeListaInversa(Lista<TipoElemento>& l){ posicion p,prim=l.primero(); cout << "Imprimiendo lista inversa..." << endl; if (l.estaVacia()){ cout << "La lista está vacia"; } else{ p=l.fin(); do{ p=l.anterior(p); cout << l.recupera(p)->dameCadena() << endl; }while(p!=prim); } }
int main() { Lista lis; Persona buscable,insertable,recuperado; posicion p; imprimirCentrado("TDA Lista con clases","#"); pausar(); cout << endl; inicializaABC(&lis); pausar(); cout << "Imprimiendo lista:" << endl; lis.imprimeLista(); pausar(); insertable.clave=26; insertable.nombre="El insertado 26 al principio"; cout << "Tratando de insertar..." << endl; lis.inserta(&insertable,lis.primero()); pausar(); buscable.clave=5; buscable.nombre="Uno con clave 5"; cout << "Buscando elemento..." << endl; lis.imprimeElemento(&buscable); cout << endl; pausar(); p=lis.localiza(&buscable); cout << "Localizado elemento en posicion p=" << p << "..." << endl; pausar(); cout << "Imprimiendo lo que recibi de posicion" << endl; lis.imprimeElemento(lis.recupera(p)); cout << endl; pausar(); recuperado=*lis.recupera(p); cout << "El elemento recuperado es: "; lis.imprimeElemento(&recuperado); cout << endl; pausar(); cout << "Suprimiendo elemento en posicion p=" << p << endl; lis.suprime(p); lis.imprimeLista(); cout << "Insertando al principio de la lista..." << endl; lis.inserta(&insertable,lis.primero()); pausar(); cout << "Imprimiendo lista:" << endl; lis.imprimeLista(); cout << "Elemento recuperado antes de suprimir de la lista: "; lis.imprimeElemento(&recuperado); cout << endl << "Eliminando ultimo elemento de la lista" << endl; lis.suprime(lis.anterior(lis.fin())); pausar(); lis.imprimeLista(); cout << "Insertando al final de la lista" << endl; insertable.clave=27; insertable.nombre="El insertado 27 al final"; lis.inserta(&insertable,lis.fin()); pausar(); lis.imprimeLista(); pausar(); imprimeListaInversa(&lis); return 0; }