Estrutura de Dados - lab 09

Páginas: 4 (773 palavras) Publicado: 23 de outubro de 2013
#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;

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

voidrotacionarParaDireita(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);
}

}...
Ler documento completo

Por favor, assinar para o acesso.

Estes textos também podem ser interessantes

  • estrutura de dados
  • ESTRUTURA DE DADOS
  • Estrutura de dados
  • Estrutura de dados
  • Estrutura de Dados
  • Estrutura de dados
  • estrutura de dados
  • Estrutura de Dados

Seja um membro do Trabalhos Feitos

CADASTRE-SE AGORA!