Lista enlazada

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;
        }
    }    
}


//---------------------------------------------------

static void Main(string[] args)
        {


            ListaEnlazada lista = new ListaEnlazada();
            lista.insertar(10);
            lista.insertar(12);
            lista.insertar(1);
            lista.insertar(5);
            lista.Mostrar();
            lista.Borrar(5);
            lista.Borrar(10);
            lista.Mostrar();
            Console.ReadKey();
        }
    }


No hay comentarios:

Publicar un comentario