none
Listas Enlazadas RRS feed

  • Pregunta

  • Buenas tardes

    Solicito ayuda para poder completar el programa, necesito modificar este codigo para que, al ejecutarse el programa, solicite continuamente la captura de un valor que será insertado en la lista enlazada hasta que el usuario ya no desee continuar con dicho registro. Cabe mencionar que este código esta limitado a insertar 3 elementos en la lista. Hasta donde yo se, necesito insertar un while (true) en donde inicia el programa pero realmente no se como insertarlo, podrian ayudarme?

    ListaEnlazada lista = new ListaEnlazada();//Se crea el objeto lista enlazada
    lista.Insertar(9);//Se inserta un nodo a la lista con un atributo de tipo entero
    lista.Insertar(12);
    lista.Insertar(4);
    lista.Mostrar();//_Muestra la lista enlazada ordenada del menor al mayor de los tipos enteros
    lista.Mostrar();
    lista.Borrar(4);//Borra un nodo de la lista enlazada
     
     
    lista.Mostrar();
    Console.ReadKey();
    }
    }
    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 ListaEnlazada()
    {
    }
    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 true;
    return false;
    }
    public int ValorActual()
    {
    return actual.valor;
    }
    }
    }


    FAHS

    jueves, 6 de septiembre de 2018 2:49

Todas las respuestas

  • Hola Franck8299:

    Puedes hacer algo así:

      static void Main(string[] args)
            {
                ListaEnlazada lista = new ListaEnlazada();
                int entrada = -1;
                string cadena = "";
                while (entrada !=0)
                {
                    Console.WriteLine("escribe un numero - 0 para salir ");
                    cadena= Console.ReadLine();
                    
                    int.TryParse(cadena, out entrada);
    
                    if (entrada!=0)
                        lista.Insertar(entrada);
                }
                lista.Mostrar();
                Console.ReadLine();
            }

    Un saludo

    jueves, 6 de septiembre de 2018 6:00