martes, 12 de junio de 2018

Listas enlazadas simples en C#, con números aleatorios

 Hola espero les sea de utilidad es un codigo que ejecuta un llenado aleatorio de la lista y su ordenamiento debido en C#, se aceptan quejas y sugerencias saludos...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
    using System.Diagnostics;

namespace Listas_Enlazadas
{
    class Program
    {
        private Nodo primero;
        private int size;
       
        public Program()
        {
            this.primero = null;
            this.size = 0;
        }
        public void ListaVacia()
        {
            if (primero == null)
            {
                Console.WriteLine("La lista esta vacia");
            }
            else
            {
                Console.WriteLine("La lista tiene datos");
            }
        }
        public void addNodo(int dato)
        {

            Nodo nuevo = new Nodo(dato); //agregar el nodo
            Nodo valor1, valor2;
            if (primero == null)
            {
                primero = nuevo;
                nuevo.siguiente = null;
            }
            else
            {
                valor1 = primero;
                while(valor1!=null)
                {
                    valor2 = valor1.siguiente;
                    //condicion para ver si el numero entrante debe de ir al inicio
                    if (nuevo.dato <= valor1.dato)
                    {
                        nuevo.siguiente = primero;
                        primero = nuevo;
                        break;
                    }
                    else
                    {
                        //condicion para ver si el numero entrante debe de ir al ultimo
                        if (nuevo.dato > valor1.dato && valor2 == null)
                        {
                            valor1.siguiente = nuevo;
                            nuevo.siguiente = null;
                            break;
                        }
                        else
                        {
                          //condicion para ver si el numero entrante debe de ir en medio de otro nodo
                            if (valor1.dato < nuevo.dato && valor2.dato >= nuevo.dato)
                            {
                                valor1.siguiente = nuevo;
                                nuevo.siguiente = valor2;
                                break;
                            }
                            else
                            {
                                valor1 = valor1.siguiente;
                            }
                        }
                    }
                }
            }
            size++;
        }
        public int Size()
        {
            return size;
        }
        public void Mostrar()
        {
            Nodo actual = primero;
            while (actual != null)
            {
                Console.WriteLine("[" + actual.dato + "]->");
                actual = actual.siguiente;
            }
        }
        static void Main(string[] args)
        {
            Program lista = new Program();
            Console.ForegroundColor=ConsoleColor.Red;                
            Console.Write("Cuantos datos quiere ordenar:");
           int linea=Convert.ToInt16(Console.ReadLine());           
            Random aleatorio = new Random();
            lista.ListaVacia();
            for (int f = 0; f < linea; f++)
            {   
                lista.addNodo(Convert.ToInt16(aleatorio.Next(0, 1000)));           
               
            }
           
            //lista.addNodo(11);
            //lista.addNodo(2);
           // lista.addNodo(35);
            //lista.addNodo(14);
            //lista.addNodo(53);
            lista.Mostrar();
            Console.WriteLine("tamaño" + lista.Size());
            //lista.ListaVacia();
            //Console.ReadLine();
        }
    }
}

//Codigo del Nodo



namespace Listas_Enlazadas
{
    class Nodo
    {
        public int dato;
        public Nodo siguiente;
        public Nodo(int dato) //constructor
        {
            this.dato = dato;
            this.siguiente = null;
        }
    }
}

No hay comentarios:

Publicar un comentario