class Nodo
{
public int valor;
public Nodo sig;
public Nodo(int v, Nodo s)
{
valor = v;
sig = s;
}
}
class ListaEnlazada
{
Nodo primero;
Nodo actual;
public void Insertar(int v)
{
Nodo anterior;
if (ListaVacia() || primero.valor > v)
{
primero = new Nodo(v, primero);
}
else
{
anterior = primero;
while (anterior.sig != null && anterior.sig.valor <= v) anterior = anterior.sig; anterior.sig = new Nodo(v, anterior.sig); } } public void Mostrar() { Nodo aux; aux = primero; while (aux != null) { Console.Write(aux.valor + "->");
aux = aux.sig;
}
Console.Write(" null ");
Console.WriteLine();
}
public void Siguiente()
{
if (actual != null)
actual = actual.sig;
}
public void Primero()
{
actual = primero;
}
public void Borrar(int v)
{
Nodo anterior, nodo;
nodo = primero;
anterior = null;
while (nodo != null && nodo.valor < v)
{
anterior = nodo;
nodo = nodo.sig;
}
if (nodo == null || nodo.valor != v)
return;
else
{
if (anterior == null)
primero = nodo.sig;
else
anterior.sig = nodo.sig;
}
}
public bool ListaVacia()
{
if (primero == null)
return true;
return false;
}
public void Ultimo()
{
Primero();
if (!ListaVacia())
while (actual.sig != null)
Siguiente();
}
public bool Actual()
{
if (actual != null)
return false;
return true;
}
public int ValorActual()
{
return actual.valor;
}
}
}