Arvore com lista em C

320 palavras 2 páginas
#include
#include

using namespace std;

// LISTA

typedef struct { int Chave;
} TipoItem;

typedef struct TipoCelula *TipoApontador;

typedef struct TipoCelula { TipoItem Item; TipoApontador Prox;
} TipoCelula;

typedef struct { TipoApontador Primeiro, Ultimo;
} TipoLista;

// ARVORE typedef struct Registro { char Palavra[50]; TipoLista Paginas;
} Registro;

typedef struct No * Apont; typedef struct No { Registro Reg; Apont Esq, Dir;
} No;

typedef Apont IndiceRemissivo;

// FUNÇÕES LISTA

void FLVazia(TipoLista *Lista)
{ Lista -> Primeiro = (TipoApontador) malloc(sizeof(TipoCelula)); Lista -> Ultimo = Lista -> Primeiro; Lista -> Primeiro -> Prox = NULL;
}

void InsereNaLista(TipoItem x, TipoLista *Lista)
{ Lista -> Ultimo -> Prox = (TipoApontador) malloc(sizeof(TipoCelula)); Lista -> Ultimo = Lista -> Ultimo -> Prox; Lista -> Ultimo -> Item = x; Lista -> Ultimo -> Prox = NULL;
}

void Imprime(TipoLista Lista)
{ TipoApontador Aux; Aux = Lista.Primeiro -> Prox; while (Aux != NULL) { printf("%d\n", Aux -> Item.Chave); Aux = Aux -> Prox; }
}

// FUNÇÕES ARVORE void PesquisaPalavraInserePagina(Registro *x, Apont *p, int n)
{ if (*p == NULL) { printf("Erro : Registro nao esta presente na arvore\n"); return; } if ( strcmp( x->Palavra, (*p)->Reg.Palavra ) < 0 ) { PesquisaPalavraInserePagina(x, &(*p)->Esq , n); return; } if ( strcmp( x->Palavra, (*p)->Reg.Palavra ) > 0 ) PesquisaPalavraInserePagina(x, &(*p)->Dir, n); else{ TipoItem temp; temp.Chave=n; InsereNaLista (temp, &(*p)->Reg.Paginas); }
}

void InsereNaArvore(Registro x, Apont *p)
{ if (*p == NULL) { *p = (Apont)malloc(sizeof(No)); (*p)->Reg = x; (*p)->Esq = NULL; (*p)->Dir = NULL; FLVazia(&(*p)->Reg.Paginas); return; } if ( strcmp( x.Palavra, (*p)->Reg.Palavra ) < 0 ) {

Relacionados

  • Estrutura de dados
    1447 palavras | 6 páginas
  • Estruturas de dados em c
    114286 palavras | 458 páginas
  • estruturas
    12037 palavras | 49 páginas
  • Material Estrutura De Dados
    4375 palavras | 18 páginas
  • Aula de arvore
    2592 palavras | 11 páginas
  • Questões
    2254 palavras | 10 páginas
  • Simao
    18552 palavras | 75 páginas
  • Aula Uea Final
    906 palavras | 4 páginas
  • trabalho OPP
    19441 palavras | 78 páginas
  • Fifo, filo
    2899 palavras | 12 páginas