Exemplo n.º 1
0
void Normalize(XMFLOAT3* vector)
{
	float largo = Largo(vector);
	vector->x /= largo;
	vector->y /= largo;
	vector->z /= largo;
}
Exemplo n.º 2
0
void ListaEnlazada<T>::Borrar(nat pos)
{
	assert(pos < Largo());

	if (pos == 0)
	{
		primero = primero->sig;
		if (Largo() == 1)
			ultimo = nullptr;
	}
	else
	{
		if (pos == Largo() -1)
		{
			if (posActual < Largo() - 1)
				ultimo = nodoActual;
			else
				ultimo = primero;
			while (ultimo->sig->sig)
				ultimo = ultimo->sig;
			ultimo->sig = nullptr;
		}
		else
		{
			if (posActual >= pos)
			{
				posActual = 0;
				nodoActual = primero;
			}
			while (posActual < pos - 1)
			{
				posActual++;
				nodoActual = nodoActual->sig;
			}
			nodoActual->sig = nodoActual->sig->sig;
		}
	}

	if (posActual == pos)
		nodoActual = nodoActual->sig;
	else if (posActual > pos)
		posActual--;
	largo--;
}
Exemplo n.º 3
0
void ListaEnlazada<T>::AgregarEn(const T& e, nat pos)
{
	assert(pos <= Largo());
	if (pos == 0)
	{
		primero = new NodoLista<T>(e, primero);
		if (!ultimo)
		{
			ultimo = nodoActual = primero;
			posActual = 0;
		}
		else
			posActual++;
	}
	else if (pos == Largo())
	{
		ultimo->sig = new NodoLista<T>(e);
		ultimo = ultimo->sig;
	}
	else
	{
		if (posActual >= pos)
		{
			posActual = 0;
			nodoActual = primero;
		}

		while (posActual - 1 < pos)
		{
			posActual++;
			nodoActual = nodoActual->sig;
		}

		pNodoLista nuevo = new NodoLista<T>(e, nodoActual->sig);
		nodoActual->sig = nuevo;
		nodoActual = nuevo;
		posActual = pos;
	}
	largo++;
}
Exemplo n.º 4
0
T& ListaEnlazada<T>::ElementoEn(nat pos)
{
	assert(pos < Largo());
	if (pos == 0)
		return primero->dato;
	else if (pos == Largo() - 1)
		return ultimo->dato;

	if (posActual > pos)
	{
		posActual = 0;
		nodoActual = primero;
	}

	while (posActual < pos)
	{
		nodoActual = nodoActual->sig;
		posActual++;
	}

	return nodoActual->dato;
}
Exemplo n.º 5
0
bool TablaHashAbierto<C,V,FHash>::EstaLlena() const
{
	return fc < (static_cast<float>(Largo()) + 1) / arreglo.Largo;
}