Doubt with pointers in C

0
Hello, I'm looking for the hrs problem in this excerpt (implementation of an avl tree) but I can not find, I pass a D for this function and its value is modified within the context, but it is not modified in the context in function is called.

Dictionary.c

struct No * RotacionaEsquerda(struct No * Pai)
{
printf("Rotacionando %d para a esquerda\n", GetChave(Pai->I));

struct No * Filho = Pai->direita;
Pai->direita = Filho->esquerda;
Filho->esquerda = Pai;
return Filho;
}

void Balanceamento (struct Dicionario * D, struct No * Pai) {

int Fator = FatorDeBalanceamento (Pai);

if (Fator >= 2) {
// Arvore tendendo a direita
        Pai = RotacionaEsquerda(Pai);
        // Raiz é modificado neste contesto
        D->raiz;
} else {
    if (Fator <= -2) {
    //Arvore tendendo a esquerda

    }
}

Client.c

int main()
{
srand( time(NULL) );

struct Dicionario * D = CriaDicionario();
int totalNiveis = 0;    

while(1)
{
    char comando[20];
    if(scanf("%s", comando) < 1 || strcmp(comando, "SAIR") == 0)
        break;  

    if(strcmp(comando, "INSERIR") == 0)
    {
        struct Item I;
        Chave c;
        scanf("%d", &c);
        SetChave(&I, c);

        Inserir(D, I);
    }
    else if(strcmp(comando, "BUSCAR") == 0)
    {
        Chave c;
        scanf("%d", &c);

        int niveis = Buscar(D, c);
        printf("%d\n", niveis);
        totalNiveis += niveis;
    }
    else if(strcmp(comando, "REMOVER") == 0)
    {
        Chave c;
        scanf("%d", &c);

        Remover(D, c);
    }
    else if(strcmp(comando, "IMPRIMIR") == 0)
    {
        Imprime(D);
    }
}
printf("%d\n", totalNiveis);
return 0;
}

When printing Dicinario D in the context of the Balancing function, it displays the correct output, but when trying to display in the context of the main function in Client.c it displays the old Dictionary D without the left and right (Rotate left) p>

source code link

    
asked by anonymous 04.07.2016 / 00:27

0 answers