namespace pruebas
{
class Program
{
static void Main(string[] args)
{
Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();
short op;
string busca;
Nodo v;
ListaEnlazada.Lista m = new ListaEnlazada.Lista();
do
{
Console.Clear();
Console.WriteLine("\t================\n");
Console.WriteLine("\tLISTAS ENLAZADAS\n");
Console.WriteLine("\t================\n");
Console.WriteLine("1. Ingresar");
Console.WriteLine("2. Mostrar");
Console.WriteLine("3. Buscar");
Console.WriteLine("4. Eliminar");
Console.WriteLine("5. Salir");
Console.Write("Ingrese opción: ");
op = Convert.ToInt16(Console.ReadLine());
switch (op)
{
case 1:
m.Ingresar();
break;
case 2:
Console.Clear();
m.Mostrar();
break;
case 3:
Console.Clear();
Console.Write("Ingrese valor a buscar: ");
busca = Console.ReadLine();
v = m.Buscar(busca);
if (v == null)
Console.WriteLine("No existe el Numero");
else
{
Console.WriteLine("Nodo encontrado");
v.Mostrar();
}
Console.ReadLine();
break;
case 4:
if (m.Eliminar())
Console.WriteLine("Nodo eliminado...");
else
Console.WriteLine("Nodo no encontrado...");
Console.ReadLine();
break;
default:
Console.WriteLine("Proceso Terminado...");
break;
}
} while ((op > 0) && (op < 5));
}
}
namespace ListaEnlazada
{
class Lista
{
Nodo first, last;
public Lista() { first = last = null; }
public void Mostrar()
{
Nodo i;
if (first != null)
{
i = first;
while (i != null)
{
i.Mostrar();
i = i.sig;
}
}
else
{
Console.WriteLine("lista vacia");
}
Console.ReadLine();
}
public Nodo Buscar(string b)
{
Nodo i;
i = first;
while (i != null)
{
if (i.NOMBRE == b)
return (i);
else
i = i.sig;
}
return (null);
}
public void Ingresar()
{
string nom;
Console.Clear();
Console.WriteLine("Ingrese Datos ");
Console.WriteLine("**************");
Console.Write("Ingrese numero: ");
nom = Console.ReadLine();
Nodo i = new Nodo(nom);
Insertar(i);
}
public bool Eliminar()
{
string busca;
Nodo padre, hijo;
Console.Write("Ingrese numero que desea eliminar: ");
busca = Console.ReadLine();
padre = Eliminar(busca);
if (padre == last)
return (false);
if (padre == null)
{
hijo = first;
first = hijo.sig;
}
else
{
hijo = padre.sig;
padre.sig = hijo.sig;
}
if (hijo == last)
last = padre;
hijo = null;
return (true);
}
public Nodo Eliminar(string b)
{
Nodo i, p;
i = first;
p = null;
while (i != null)
{
if (i.NOMBRE == b)
break;
else
{
p = i;
i = i.sig;
}
}
return (p);
}
private void Insertar(Nodo i)
{
if (first == null)
first = i;
else
last.sig = i;
last = i;
}
}
}
public class Nodo
{
private string Nombre;
public Nodo sig;
public Nodo(string nombre) { this.Nombre = nombre; this.sig = null; }
public void Mostrar() { Console.WriteLine("numero :{0}", this.Nombre); }
public string NOMBRE { get { return (Nombre); } }
}
}