Example #1
0
    public NodoCabezeraY(int y, int z)
    {
        PosY = y;
        PosZ = z;

        Izquierda = null;
        Derecha   = null;
        Arriba    = null;
        Abajo     = null;

        lista = new ListaHorizontal();
    }
Example #2
0
    public NodoCabezeraY BuscarNodo(int y, int z)
    {
        NodoCabezeraY tmp = primero;

        do
        {
            if (tmp.PosY == y)
            {
                switch (z)
                {
                case 0:
                    if (tmp.Abajo != null)
                    {
                        return(tmp.Abajo);
                    }
                    return(null);


                case 1:
                    return(tmp);


                case 2:
                    if (tmp.Arriba != null && tmp.Arriba.PosZ == z)
                    {
                        return(tmp.Arriba);
                    }
                    return(null);


                case 3:
                    if (tmp.Arriba != null && tmp.Arriba.PosZ == z)
                    {
                        return(tmp.Arriba);
                    }
                    else if (tmp.Arriba != null && tmp.Arriba.Arriba.PosZ == z)
                    {
                        return(tmp.Arriba.Arriba);
                    }
                    return(null);


                default:
                    return(null);
                }
            }
            tmp = tmp.Derecha;
        } while (tmp != null);

        return(null);
    }
Example #3
0
    public void Insertar(NodoCabezeraY nuevoaux)
    {
        NodoCabezeraY nuevo;

        if (nuevoaux.PosZ == 1)
        {
            nuevo = nuevoaux;
        }
        else
        {
            nuevo = new NodoCabezeraY(nuevoaux.PosY, 1);
        }

        NodoCabezeraY tmp  = primero;
        NodoCabezeraY tmp2 = nuevo;

        if (primero == null)
        {
            primero = nuevo;
            ultimo  = nuevo;
        }
        else if (nuevo.PosY < primero.PosY)
        {
            primero.Derecha = nuevo;
            nuevo.Izquierda = primero;
            primero         = nuevo;
        }
        else if (nuevo.PosY > ultimo.PosY)
        {
            ultimo.Derecha  = nuevo;
            nuevo.Izquierda = ultimo;
            ultimo          = nuevo;
        }
        else
        {
            do
            {
                if (tmp.PosY < nuevo.PosY && tmp.Derecha.PosY > nuevo.PosY)
                {
                    nuevo.Derecha         = tmp.Derecha;
                    tmp.Derecha.Izquierda = nuevo;
                    tmp.Derecha           = nuevo;
                    nuevo.Izquierda       = tmp;
                    tmp2 = nuevo;
                    break;
                }
                else if (tmp.PosY == nuevo.PosY)
                {
                    tmp2 = tmp;
                    break;
                }

                tmp = tmp.Derecha;
            } while (tmp != null);
        }

        //insertar en el nivel
        switch (nuevoaux.PosZ)
        {
        case 0:
            tmp2.Abajo = nuevoaux;
            break;

        case 1:
            break;

        case 2:
            tmp2.Arriba = nuevoaux;
            break;

        case 3:
            if (tmp2.Arriba == null)
            {
                tmp2.Arriba = nuevoaux;
                break;
            }
            else if (tmp.Arriba.Arriba == null)
            {
                tmp2.Arriba.Arriba = nuevoaux;
                break;
            }
            break;

        default:
            break;
        }
    }
Example #4
0
 public CabezerasY()
 {
     primero = null;
     ultimo  = null;
 }