示例#1
0
 /*
  * Encontrar el nodo anterior
  * Si esta en el primer nodo se regresa al ancla
  * Si el dato no existe se regresa el ultimo nodo
  */
 public Nodito getNoditoAnterior(int valor)
 {
     trabajo2 = ancla;
     while (trabajo2.getSiguiente() != null && trabajo2.getSiguiente().getDato() != valor)
     {
         trabajo2 = trabajo2.getSiguiente();
     }
     return(trabajo2);
 }
示例#2
0
 // Indica si la lista esta vacia o no
 public bool isEmpty()
 {
     if (ancla.getSiguiente() != null)
     {
         return(false);
     }
     else
     {
         return(true);
     }
 }
示例#3
0
        // Obtener el tamaño de elementos...
        public int getSize()
        {
            trabajo = ancla;
            int size = 0;

            while (trabajo.getSiguiente() != null)
            {
                trabajo = trabajo.getSiguiente();
                size++;
            }
            return(size);
        }
示例#4
0
 //Recorre toda la lista
 public void Transversa()
 {
     //Trabajo al Inicio
     trabajo = ancla;
     //Recorremos hasta encontrar el final
     while (trabajo.getSiguiente() != null)
     {
         //Avanzamos trabajo
         trabajo = trabajo.getSiguiente();
         //Obtenemos el dato y lo mostramos
         int d = trabajo.getDato();
         Console.Write("{0} -> ", d);
     }
     //Bajamos la linea
     Console.WriteLine();
 }
示例#5
0
        // Regresa el indice del Nodo
        public int getIndice(int valor)
        {
            int n = -1;

            trabajo = ancla;
            while (trabajo.getSiguiente() != null)
            {
                trabajo = trabajo.getSiguiente();
                n++;
                if (trabajo.getDato() == valor)
                {
                    return(n);
                }
            }
            return(-1);
        }
示例#6
0
        //Obtener el nodo que se encuentra en indice especificado
        public Nodito getIndiceNodito(int indice)
        {
            if (isEmpty() || indice > getSize())
            {
                return(ancla);
            }

            trabajo = ancla;
            int n = 0;

            while (trabajo.getSiguiente() != null && n != indice)
            {
                trabajo = trabajo.getSiguiente();
                n++;
            }
            return(trabajo);
        }
示例#7
0
 // Regresa el nodo con la primera ocurrencia del dato
 public Nodito Buscar(int valor)
 {
     if (isEmpty())
     {
         return(null);
     }
     trabajo2 = ancla;
     //Recorremos para ver si lo encontramos
     while (trabajo2.getSiguiente() != null)
     {
         trabajo2 = trabajo2.getSiguiente();
         //Al encontrarlo lo regresamos...
         if (trabajo2.getDato() == valor)
         {
             return(trabajo2);
         }
     }
     //No se encontró, regresamos null
     return(null);
 }
示例#8
0
        //Agregar nuevo elemento a la lista
        public void Agregar(int valor)
        {
            //Trabajo al Inicio
            trabajo = ancla;
            //Recorremos hasta encontrar el final
            while (trabajo.getSiguiente() != null)
            {
                //Avanzamos trabajo
                trabajo = trabajo.getSiguiente();
            }

            // Creamos el nuevo nodo
            Nodito temporal = new Nodito();

            //Insertemos el dato
            temporal.setDato(valor);
            //Finalizamos correctamente
            temporal.setSiguiente(null);
            //Ligamos el ultimo nodo encontrado con el recien creado
            trabajo.setSiguiente(temporal);
        }
示例#9
0
        // Insertar un valor después de la primera ocurrencia del dato pasado a pDonde
        public void Insertar(int indiceInsercion, int valor)
        {
            // Encontramos la posición donde vamos a insertar
            trabajo = Buscar(indiceInsercion);
            if (trabajo == null)
            {
                return;
            }
            //Creamos el nodo temporal a insertar
            Nodito temporal = new Nodito();

            temporal.setDato(valor);
            //Conectamos el temporal a la lista
            temporal.setSiguiente(trabajo.getSiguiente());
            //Conectamos trabajo a temporal
            trabajo.setSiguiente(temporal);
        }
示例#10
0
        //Borrar elemento de la lista
        public void borrarElemento(int valor)
        {
            //Verificamos que se tengan datos.
            if (isEmpty())
            {
                return;
            }
            // Buscamos los nodos con los que trabajaremos
            Nodito anterior   = getNoditoAnterior(valor);
            Nodito encontrado = Buscar(valor);

            // Si no hay nodo a borrar, salimos
            if (encontrado == null)
            {
                return;
            }
            //Brincamos el nodo
            anterior.setSiguiente(encontrado.getSiguiente());
            // Quitamos el actual de la lista.
            encontrado.setSiguiente(null);
        }