Пример #1
0
void main (void)
{
    nodoa *raiz = NULL;
    int valta, vbaja, opcion;
    int crece;

    do {
        printf ("0.-fin 1.-alta  2.-baja opcion: ");
        scanf ("%d", &opcion);
        switch (opcion) {
            case 1:
                printf ("alta: ");
                scanf ("%d", &valta);
                altas (valta, &raiz, &crece);
                break;
            case 2:
                printf ("baja: ");
                scanf ("%d", &vbaja);
                bajas (vbaja, &raiz, &crece);
                break;
        };
        porniveles (raiz);
        if (esavl (raiz))
            printf ("Es avl\n");
        else
            printf ("\a¡¡ NO ES AVL!! \n");
    } while (opcion);
    getch ();
}
Пример #2
0
void main (void)
{
    int v[N], valta, vbaja, total = 0, opcion;

    clrscr ();

    do {
        printf ("0.-salir   1.-altas   2.-bajas  Introduzca opción: ");
        scanf ("%d", &opcion);

        switch (opcion) {

            case 1:
                printf ("Introduzca valor alta: ");
                scanf ("%d", &valta);
                altas (v, &total, valta);
                break;

            case 2:
                printf ("Introduzca valor baja: ");
                scanf ("%d", &vbaja);
                bajas (v, &total, vbaja);
                break;
        }

        printf ("Pulse tecla...\n");
        getch ();
    }
    while (opcion);
}
Пример #3
0
int main()
{
    EPersona lista[C];
    char seguir='s';
    int opcion=0, flag=0;

    inicializar(lista);

    while(seguir=='s')
    {
        system("cls");
        opcion=menu();

        switch(opcion)
        {
            case 1:
                altas(lista);
                flag=1;
                system("pause");
                break;
            case 2:
                if(flag==1)
                {
                    bajas(lista);
                }
                system("pause");
                break;
            case 3:
                if(flag==1)
                {
                    imprimir(lista);
                }
                system("pause");
                break;
            case 4:
                if(flag==1)
                {
                    grafico(lista);
                }
                printf("\n");
                system("pause");
                break;
            case 5:
                seguir = salir(lista);
                break;
        }
    }

    return 0;
}
Пример #4
0
void bajas (int x, nodoa ** p, int *decrece)
{
    nodoa *q;                   /* decrece=false */

    if (*p == NULL) {
        printf ("no esta\n");
        *decrece = 0;
    }
    else if (x < (*p)->clave) {
        bajas (x, &(*p)->i, decrece);
        if (*decrece)
            equilibrarizda (p, decrece);
    }
    else if (x > (*p)->clave) {
        bajas (x, &(*p)->d, decrece);
        if (*decrece)
            equilibrardcha (p, decrece);
    }
    else {                      /* Clave iguales. Borrar p^ */
        q = *p;
        if (q->d == NULL) {     /* P tiene hijo izdo y DECRECE */
            *p = q->i;
            *decrece = 1;
        }
        else if (q->i == NULL) {    /* P tiene hijo dcho y DECRECE */
            *p = q->d;
            *decrece = 1;
        }
        else {                  /* P tiene 2 hijos. Le sustituye el inmediato inferior */
            borra2h (&(*p)->i, &q, decrece);
            if (*decrece)
                equilibrarizda (p, decrece);
        }
        free (q);
    }
}                               /* bajas */