Example #1
0
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;
}
Example #2
0
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();
  }
}
Example #3
0
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;	
}