//------------------------------------------------------------------------
        public string EliminarInicio()
        {
            string texto = inicio.ToString();
            Bases  temp  = inicio;

            inicio = inicio.Sig;
            nuevoFin(temp, temp);
            return(texto);
        }
 private string Ruta(Bases posicion, TimeSpan horaInicio, TimeSpan horaFin)
 {
     horaInicio += new TimeSpan(posicion.Horas, posicion.Minutos, 0);
     if (horaInicio <= horaFin)
     {
         return("Nombre base " + posicion.NombreBase + " Hora " + horaInicio + Environment.NewLine +
                Ruta(posicion.Sig, horaInicio, horaFin));
     }
     return(null);
 }
        private void btnInsertar_Click(object sender, EventArgs e)
        {
            string nombre   = txtBase.Text;
            int    horas    = int.Parse(txtHora.Text);
            int    minutos  = int.Parse(txtMinutos.Text);
            int    posicion = int.Parse(txtPosicion.Text);

            bases = new Bases(nombre, horas, minutos);
            ruta.Insertar(bases, posicion);
        }
 private void btnAgregarFinal_Click(object sender, EventArgs e)
 {
     bases = new Bases(txtBase.Text, Convert.ToInt32(txtHora.Text), Convert.ToInt32(txtMinutos.Text));
     ruta.agregarFinal(bases);
     txtBase.Clear();
     txtHora.Clear();
     txtMinutos.Clear();
     txtBase.Focus();
     start();
 }
 private void nuevoFin(Bases posicion, Bases temp)
 {
     if (posicion.Sig == temp)
     {
         posicion.Sig = inicio;
     }
     else
     {
         nuevoFin(posicion.Sig, temp);
     }
 }
 private Bases Buscar(string nombreBase, Bases posicion)
 {
     if (posicion.NombreBase != nombreBase)
     {
         return(Buscar(nombreBase, posicion.Sig));
     }
     else
     {
         return(posicion);
     }
 }
 private void Eliminar(Bases elemento, Bases posicion)
 {
     if (posicion.Sig == elemento)
     {
         posicion.Sig = posicion.Sig.Sig;
     }
     else
     {
         Eliminar(elemento, posicion.Sig);
     }
 }
 private void AgregarFinal(Bases posicion, Bases nuevo)
 {
     if (posicion.Sig == inicio)
     {
         posicion.Sig = nuevo;
         nuevo.Sig    = inicio;
     }
     else
     {
         AgregarFinal(posicion.Sig, nuevo);
     }
 }
 public void agregarFinal(Bases nuevo)
 {
     if (inicio == null)
     {
         inicio     = nuevo;
         inicio.Sig = inicio;
     }
     else
     {
         AgregarFinal(inicio, nuevo);
     }
 }
 private Bases EliminarUltimo(Bases posicion)
 {
     if (posicion.Sig.Sig == inicio)
     {
         Bases temp = posicion.Sig;
         posicion.Sig = inicio;
         return(temp);
     }
     else
     {
         return(EliminarUltimo(posicion.Sig));
     }
 }
        private string Listar(Bases posicion)
        {
            string texto = "";

            if (posicion.Sig != inicio)
            {
                return(texto += posicion.ToString() + Listar(posicion.Sig));
            }
            else
            {
                return(texto += posicion.ToString());
            }
        }
        //--------------------------------------------------------------------------
        public string Eliminar(string nombreBase)
        {
            string texto = "";

            if (inicio != null)
            {
                if (inicio.NombreBase == nombreBase)
                {
                    texto += EliminarInicio();
                }
                else
                {
                    Bases temp = Buscar(nombreBase, inicio);
                    Eliminar(temp, inicio);
                    return(texto += temp.ToString());
                }
            }
            return(texto);
        }
        //----------------------------------------------------------------------
        public void Insertar(Bases nuevo, int posicion)
        {
            Bases temp = inicio, temp2;

            if (inicio != null)
            {
                if (posicion == 1)
                {
                    inicio    = nuevo;
                    nuevo.Sig = temp;
                    nuevoFin(temp, temp);
                }
                else
                {
                    for (int i = 0; i < posicion - 2; i++)
                    {
                        temp = temp.Sig;
                    }
                    temp2     = temp.Sig;
                    temp.Sig  = nuevo;
                    nuevo.Sig = temp2;
                }
            }
        }