Estrutura de Dados - lab 09

773 palavras 4 páginas
#include
#include
#include

#define NUM_ALUNOS 69
#define TAM_NOME 30

typedef enum{false, true} bool; int quant;

// Estrutura NoAluno
/*
Inserir struct
*/
typedef struct no{ char nome[30]; int matricula; int fatBal; struct no* esq; struct no* dir;
} noAluno;

//------------------------------------------------------------------------------

void rotacionarParaDireita(noAluno** atual)
{
noAluno *aux; aux = (*atual); *atual = (*atual)->esq; aux->esq = (*atual)->dir; (*atual)->dir = aux; aux->fatBal = fatorBalanceamento(aux); (*atual)->fatBal = fatorBalanceamento(*atual);
}

void rotacionarParaEsquerda(noAluno** atual)
{
noAluno *aux; aux = (*atual); *atual = (*atual)->dir; aux->dir = (*atual)->esq; (*atual)->esq = aux; aux->fatBal = fatorBalanceamento(aux); (*atual)->fatBal = fatorBalanceamento(*atual);
}

int fatorBalanceamento(noAluno* atual)
{
int lh,rh;

if(atual == NULL) return(0);

if(atual->esq == NULL) lh = 0; else lh = 1 + atual->esq->fatBal;

if(atual->dir == NULL) rh = 0; else rh = 1 + atual->dir->fatBal;

return (rh - lh);
}

// Insercao na árvore AVL void inserirNoArvoreAVL(noAluno** noAtual , noAluno* novoNoAluno){

if(*noAtual == NULL) { *noAtual = novoNoAluno; } else { if(novoNoAluno->matricula < (*noAtual)->matricula) { inserirNoArvoreAVL(&(*noAtual)->esq, novoNoAluno);

if(fatorBalanceamento(*noAtual) == -2) { if(novoNoAluno->matricula < (*noAtual)->esq->matricula) rotacionarParaDireita(noAtual); else { rotacionarParaEsquerda(&(*noAtual)->esq); rotacionarParaDireita(noAtual); }

}

Relacionados

  • oferta 2012
    1694 palavras | 7 páginas
  • Aula01a Gandhi
    1574 palavras | 7 páginas
  • PIM EQUIPE PLER 01
    1092 palavras | 5 páginas
  • A grande ética
    1593 palavras | 7 páginas
  • Analise de sistemas
    63332 palavras | 254 páginas
  • Banco de dados
    1065 palavras | 5 páginas
  • TCC_Cabeamento_Estruturado 2013 10 25
    30133 palavras | 121 páginas
  • Trabalho sobre área plana
    665 palavras | 3 páginas
  • HorrioRaja20151 12
    7002 palavras | 29 páginas
  • fisica experimental
    7310 palavras | 30 páginas