ostream& operator<<(ostream & os, const TListaPoro &l) { TListaPosicion e; e=l.Primera(); int i=0; int longi=l.Longitud(); bool espacio = false; os <<'('; if (l.primero != NULL) { for (; i<longi; e = e.Siguiente()) { if (espacio) { os <<' '; } os << l.Obtener(e);//mirar esto espacio = true; i++; } } os <<')'; return os; }
int main(void) { TPoro p(1, 1, 1, (char*)"rojo"), q(2, 2, 2, (char*)"verde"), r(3, 3, 3, (char*)"amarillo"); TListaPoro a; TListaPosicion pos; a.Insertar(p); a.Insertar(q); a.Insertar(r); pos = a.Ultima(); while(!pos.EsVacia()) { cout << a.Obtener(pos) << endl; pos = pos.Anterior(); } }
bool TListaPoro::Insertar(const TPoro& p) { bool insertado=false; bool yata=Buscar(p); TPoro aux=p; TListaPosicion n; TListaNodo nuevo; nuevo.e=p; n.pos=primero; while (!n.EsVacia() && !insertado && !yata) { if (n.pos->e.Volumen()>aux.Volumen()) { insertado=true; } else { n.pos=n.pos->siguiente; } } if (EsVacia()) { ultimo=primero=new TListaNodo(nuevo); } else if(insertado && !yata) { TListaPosicion aux; aux.pos=n.pos->anterior; n.pos->anterior=new TListaNodo(nuevo); n.pos->anterior->anterior=aux.pos; aux.pos->siguiente=n.pos->anterior; } else if(!yata && aux.Volumen()>ultimo->e.Volumen()) { ultimo->siguiente=new TListaNodo(nuevo); ultimo->siguiente->anterior=ultimo; ultimo=ultimo->siguiente; } return insertado; }