//llenar la lista con nodos del arbol binario
 public void ingresar(usuario user)
 {
     //insertar la parte izquierda
     if (user.izq != null)
     {
         ingresar(user.izq);
     }
     //insertar el nodo actual
     if (ultimo == null)//la lista esta vacia
     {
         primero = new nodoinorder(user);
         ultimo  = primero;
     }
     else
     {
         nodoinorder nuevo = new nodoinorder(user);
         ultimo.siguiente = nuevo;
         nuevo.anterior   = ultimo;
         ultimo           = nuevo;
     }
     //insertar la parte derecha
     if (user.der != null)
     {
         ingresar(user.der);
     }
 }
        public void insertar(nodoinorder entrada)
        {
            //copiar nodo de entrada
            nodotopten nuevo = new nodotopten(entrada.user);

            nodotopten temp = primero;

            if (temp == null)
            {
                primero = nuevo;
            }
            else
            {
                if (tipo == 0) //el ordenamiento es por juegos ganados
                {              //insertar al inicio
                    if (temp.user.ganados <= nuevo.user.ganados)
                    {
                        nuevo.siguiente = temp;
                        temp.anterior   = nuevo;
                        primero         = nuevo;
                    }
                    //insertar al medio
                    else
                    {
                        while (temp.siguiente != null)
                        {
                            if (temp.siguiente.user.ganados <= nuevo.user.ganados)
                            {
                                nuevo.siguiente          = temp.siguiente;
                                nuevo.siguiente.anterior = nuevo;
                                temp.siguiente           = nuevo;
                                nuevo.anterior           = temp;
                                return;//terminar el proceso
                            }
                            else
                            {
                                temp = temp.siguiente;
                            }
                        }
                        //insertar al final
                        temp.siguiente = nuevo;
                        nuevo.anterior = temp;
                    }
                }
                else if (tipo == 1) //el tipo de ordenamiento es por porcentaje
                {                   //insertar al inicio
                    if (temp.user.porcentaje <= nuevo.user.porcentaje)
                    {
                        nuevo.siguiente = temp;
                        temp.anterior   = nuevo;
                        primero         = nuevo;
                    }
                    //insertar al medio
                    else
                    {
                        while (temp.siguiente != null)
                        {
                            if (temp.siguiente.user.porcentaje <= nuevo.user.porcentaje)
                            {
                                nuevo.siguiente          = temp.siguiente;
                                nuevo.siguiente.anterior = nuevo;
                                temp.siguiente           = nuevo;
                                nuevo.anterior           = temp;
                                return;//terminar el proceso
                            }
                            else
                            {
                                temp = temp.siguiente;
                            }
                        }
                        //insertar al final
                        temp.siguiente = nuevo;
                        nuevo.anterior = temp;
                    }
                }
                else if (tipo == 2) //el tipo de ordenamiento es por cantidad de contactos
                {                   //insertar al inicio
                    if (temp.user.contactos.cont <= nuevo.user.contactos.cont)
                    {
                        nuevo.siguiente = temp;
                        temp.anterior   = nuevo;
                        primero         = nuevo;
                    }
                    //insertar al medio
                    else
                    {
                        while (temp.siguiente != null)
                        {
                            if (temp.siguiente.user.contactos.cont <= nuevo.user.contactos.cont)
                            {
                                nuevo.siguiente          = temp.siguiente;
                                nuevo.siguiente.anterior = nuevo;
                                temp.siguiente           = nuevo;
                                nuevo.anterior           = temp;
                                return;//terminar el proceso
                            }
                            else
                            {
                                temp = temp.siguiente;
                            }
                        }
                        //insertar al final
                        temp.siguiente = nuevo;
                        nuevo.anterior = temp;
                    }
                }

                else if (tipo == 3) //el tipo de ordenamiento es por mayor cantidad de unidades eliminadas
                {                   //insertar al inicio
                    if (temp.user.destruidos <= nuevo.user.destruidos)
                    {
                        nuevo.siguiente = temp;
                        temp.anterior   = nuevo;
                        primero         = nuevo;
                    }
                    //insertar al medio
                    else
                    {
                        while (temp.siguiente != null)
                        {
                            if (temp.siguiente.user.destruidos <= nuevo.user.destruidos)
                            {
                                nuevo.siguiente          = temp.siguiente;
                                nuevo.siguiente.anterior = nuevo;
                                temp.siguiente           = nuevo;
                                nuevo.anterior           = temp;
                                return;//terminar el proceso
                            }
                            else
                            {
                                temp = temp.siguiente;
                            }
                        }
                        //insertar al final
                        temp.siguiente = nuevo;
                        nuevo.anterior = temp;
                    }
                }
            }
        }
 public nodoinorder(usuario user_)
 {
     user      = user_;
     anterior  = null;
     siguiente = null;
 }