Arvores

1125 palavras 5 páginas
Árvore B
-----------------------------------------------------------------------------------

#include
#include
#include
#define m 2
#define mm 4
#define reservado "cls"

typedef int TipoChave; typedef struct
{
TipoChave Chave;
} Registro;

typedef struct Pagina_str *Apontador; typedef struct Pagina_str
{
int n; Registro r[mm]; Apontador p[mm + 1];
} Pagina;

typedef Apontador TipoDicionario; void Inicializa(TipoDicionario *Dicionario)
{
*Dicionario = NULL;
} /* Inicializa */

void Pesquisa(Registro *x, Apontador Ap)
{
int i;

if (Ap == NULL) { printf("Erro: Registro nao esta presente\n"); getchar(); getchar(); return; } i = 1; while (i < Ap->n && x->Chave > Ap->r[i - 1].Chave) i++; if (x->Chave == Ap->r[i - 1].Chave) { *x = Ap->r[i - 1]; return; } if (x->Chave < Ap->r[i - 1].Chave) Pesquisa(x, Ap->p[i - 1]); else Pesquisa(x, Ap->p[i]);
} /* Pesquisa */

void InsereNaPagina(Apontador Ap, Registro Reg, Apontador ApDir)
{
int k; int NaoAchouPosicao;

k = Ap->n; NaoAchouPosicao = k > 0; while (NaoAchouPosicao) { if (Reg.Chave >= Ap->r[k - 1].Chave) { NaoAchouPosicao = 0; break; } Ap->r[k] = Ap->r[k - 1]; Ap->p[k + 1] = Ap->p[k]; k--; if (k < 1) NaoAchouPosicao = 0; } Ap->r[k] = Reg; Ap->p[k + 1] = ApDir; Ap->n++;
} /*InsereNaPagina*/

void Ins(Registro Reg, Apontador Ap, int *Cresceu, Registro *RegRetorno, Apontador *ApRetorno)
{
Apontador ApTemp; int i, j;

if (Ap == NULL) { *Cresceu = 1; *RegRetorno = Reg; *ApRetorno = NULL; return; } i = 1; while (i < Ap->n && Reg.Chave > Ap->r[i - 1].Chave) i++; if (Reg.Chave == Ap->r[i - 1].Chave) { printf(" Erro: Registro ja esta presente\n"); getchar();

Relacionados

  • Arvores
    773 palavras | 4 páginas
  • ARVORES
    1671 palavras | 7 páginas
  • Árvores
    3810 palavras | 16 páginas
  • Árvores
    260 palavras | 2 páginas
  • Árvores
    310 palavras | 2 páginas
  • arvores
    1038 palavras | 5 páginas
  • Árvores
    453 palavras | 2 páginas
  • Arvores
    2470 palavras | 10 páginas
  • Arvores
    376 palavras | 2 páginas
  • árvores
    459 palavras | 2 páginas