Está en la página 1de 6

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication40

{
class Program
{
static void Main(string[] args)
{
Program ob = new Program();
lista lista1 = new lista();
int op = 0;
do
{
Console.Clear();
Console.WriteLine("\n1- Iniciar La lista");
Console.WriteLine("2- Insertar datos al inicio");
Console.WriteLine("3- Mostrar datos");
Console.WriteLine("4- Eliminar al inicio");
Console.WriteLine("6- Insertar datos al final");
Console.WriteLine("7- Insertar datos en medio");
Console.WriteLine("8- Eliminar enmedio");
Console.WriteLine("9- Eliminar al final");
Console.WriteLine("10- salir");
Console.WriteLine("\nSeleccione su opcin");
op = ob.entero();
switch (op)
{
case 1:
Console.Clear();
Console.SetCursorPosition(10, 10);
Console.WriteLine("Iniciando la lista...");
Console.WriteLine("Proporcione el dato de inicio");
lista1.iniciar_lista(ob.entero());
break;
case 2:
Console.Clear();
Console.SetCursorPosition(10, 11);
Console.WriteLine("Insertando datos al inicio...");
Console.WriteLine("Ingresa num");
lista1.insertar_dato(ob.entero());
break;
case 3:
Console.Clear();
Console.SetCursorPosition(10, 12);
Console.WriteLine("Mostrando datos...");
lista1.lectura(lista1.inicio);
Console.ReadKey();
break;
case 4:
Console.Clear();
Console.SetCursorPosition(10, 12);
Console.WriteLine("Eliminando dato en Inicio...");
lista1.eliminarInicio();
Console.ReadKey();
break;
case 6:
Console.Clear();
Console.SetCursorPosition(10, 11);
Console.WriteLine("Insertando datos al Final...");
Console.WriteLine("Ingresa num");
lista1.insertarFinal(ob.entero(), lista1.inicio);
//Console.ReadKey();
break;
case 7:
Console.Clear();
Console.SetCursorPosition(10, 11);
Console.WriteLine("Insertando datos en medio..");
Console.WriteLine("Ingresa num");
lista1.insertarMedio(ob.entero(), lista1.inicio);
Console.ReadKey();
break;
case 8:
Console.Clear();
Console.SetCursorPosition(10, 11);
Console.WriteLine("Eliminar datos en medio..");
lista1.eliminar_enmedio(ob.entero(), lista1.inicio);
Console.ReadKey();
break;
case 9:
Console.Clear();
Console.SetCursorPosition(10, 11);
Console.WriteLine("Eliminar datos al final..");
lista1.eliminar_final(lista1.inicio);
Console.ReadKey();
break;
default:
break;

}
} while (op != 10);
}
public int entero()
{
int x = 0, ban = 0;
do
{
try
{
x = Convert.ToInt32(Console.ReadLine());
ban = 1;
}
catch
{
Console.WriteLine("Ingrese solo numeros enteros");
}
} while (ban == 0);
return x;

}
}

public class nodo //fabrica de nodos XD


{
public object info;
public nodo sig;
public nodo(object valor)
{
info = valor;
sig = null;
}
}

public class lista


{
public int ban=0;
public nodo inicio;
public lista()
{
inicio = null;
}
public void iniciar_lista(object x)
{
inicio = new nodo(x);
}
public void insertar_dato(object x)
{
try
{
nodo temp = new nodo(x);
temp.sig = inicio;
inicio = temp;
}
catch
{
Console.WriteLine("Solo se aseptan numeros");
}
}
public void lectura(nodo x)//mostrar contenido
{
try
{
Console.Write(x.info + " ");
if (x.sig != null)
lectura(x.sig);
}
catch
{
Console.WriteLine("La lista no tiene datos");
}
}

public void eliminarInicio()


{
if (inicio == null)
Console.WriteLine("La lista no tiene datos");
else
{
Console.WriteLine("El dato " + inicio.info + " Ha sido
eliminado");
inicio = inicio.sig;
}
}
public void insertarFinal(object x, nodo temp)
{
//temp = inicio;
if (inicio == null)
inicio = new nodo(x);
else
{
if (temp.sig == null)
temp.sig = new nodo(x);
else
{
insertarFinal(x, temp.sig);
}
}
}

public void insertarMedio(object x, nodo temp)


{
nodo aux;
if (inicio == null)
inicio = new nodo(x);
else
{
aux = new nodo(x);
if (inicio.sig == null)
{
if (Convert.ToInt32(x) < Convert.ToInt32(inicio.info))
{
aux.sig = inicio;
inicio = aux;
}
else
{
inicio.sig = new nodo(x);
}
}
else
{
if (Convert.ToInt32(x) < Convert.ToInt32(inicio.info))
{
aux.sig = inicio;
inicio = aux;
}
else
{
if (Convert.ToInt32(x) < Convert.ToInt32(temp.sig.info))
{
aux.sig = temp.sig;
temp.sig = aux;
}
else
{
if (temp.sig.sig == null)
{
temp.sig.sig = aux;
}
else
{
insertarMedio(x, temp.sig);
}
}

}
}
}
}

public void eliminar_final(nodo temp)


{
if (inicio == null)
{
Console.WriteLine("La lista no contiene datos");
}
else
{
if (inicio.sig == null)
{

Console.WriteLine("El dato " + inicio.info + " Esta siendo


eliminado...");
inicio = null;
}
else
{
if (temp.sig.sig == null)
{
Console.WriteLine("El dato " + temp.sig.info + " Esta
siendo eliminado...");
temp.sig = null;
}
else
{

eliminar_final(temp.sig);
}
}

public void eliminar_enmedio(object x, nodo temp)


{

if (inicio == null)
{
Console.WriteLine("No existe ese dato en el arreglo...");
}
else
{

if (Convert.ToInt32(inicio.info) == Convert.ToInt32(x))
{
Console.WriteLine("El dato " + temp.info + " Esta siendo
eliminado...");
inicio = temp.sig;
ban = 1;
}
else
{
if (inicio.sig==null)
{
Console.WriteLine("No existe ese dato en el arreglo...");
}
else
{
if (temp.sig != null)
{
if (Convert.ToInt32(temp.sig.info) ==
Convert.ToInt32(x))
{
Console.WriteLine("El dato " + temp.sig.info + "
Esta siendo eliminado...");
temp.sig = temp.sig.sig;
ban = 1;

}
else
{
eliminar_enmedio(x, temp.sig);
}
}
else
Console.WriteLine("No existe ese dato en el
arreglo...");
}
}

}
}
}
}

También podría gustarte