codigo fuente del programa de arbol b

7
CODIGO FUENTE DEL PROGRA MA DE ARBOL B #include <iostream> #define MAX 100 #include <conio.h> //BIBLIOTECAS #include <bits/stdc++.h> using namespace std; class node; struct p_nodo //ESTRUCTURA PRINCIPAL { node *next; //SIGUIENTE DE NODO int key; //VALOR DEL NODO }; class node//ARRAY DE NODOS //CLASE NODO { public: int noofkeys; p_nodo data[MAX]; node *father; node *first; node(); //FUNCIONES DE LA CLASE int leafnode(); void insertinanode(p_nodo x); p_nodo splitanode(p_nodo x); node *nextindex(int x); void display(); }; void node::display() //FUNCION MOSTRAR { int i; //DECLARA VARIABLE I; cout<<"("; for(i=0;i<noofkeys;i++) cout<<data[i].key<<" "; //LLAVES PARA LOS NODOS cout<<")"; } node *node::nextindex(int x) //FUNCION PARA EL ORDENAMIENTO DE LOS NODOS { int i;

Upload: marco-denys-choque-castro

Post on 21-Sep-2015

226 views

Category:

Documents


3 download

DESCRIPTION

CODIGO FUENTE

TRANSCRIPT

CODIGO FUENTE DEL PROGRAMA DE ARBOL B

#include #define MAX 100#include //BIBLIOTECAS#include using namespace std;

class node; struct p_nodo//ESTRUCTURA PRINCIPAL {node *next;//SIGUIENTE DE NODOint key;//VALOR DEL NODO };

class node//ARRAY DE NODOS//CLASE NODO {public:int noofkeys; p_nodo data[MAX];node *father;node *first;node();//FUNCIONES DE LA CLASEint leafnode();void insertinanode(p_nodo x);p_nodo splitanode(p_nodo x); node *nextindex(int x); void display(); };

void node::display()//FUNCION MOSTRAR {int i;//DECLARA VARIABLE I;coutdata[i]; T->noofkeys--; } else { for(i=centre,j=0;idata[j]=data[i]; //SI EL DATO ES MAYOR QUE EL CENTRO SUBE A PADRE T->noofkeys=noofkeys-centre; noofkeys=noofkeys-T->noofkeys; insertinanode(x); T->father=father; myp_nodo.key=T->data[0].key; myp_nodo.next=T;//INSERTA EL PADRE EN UNA NUEVO NODO Y RETORNA EL PADRE for(i=1;inoofkeys;i++)T->data[i-1]=T->data[i]; T->noofkeys--; } return(myp_nodo); }

node::node(){ for(int i=0;iinsertinanode(myp_nodo);//ROOT INSERTA EN EL ARBOL} else{ p=root;//SINO ROOT ES EL PADRE while(!(p->leafnode())) p=p->nextindex(x);

if(p->noofkeysinsertinanode(myp_nodo);

else{ myp_nodo=p->splitanode(myp_nodo); while(1) { if(p==root)//SI P ES IGUAL A NULL { q=new node;//Q NUEVO NODO q->data[0]=myp_nodo;//DATO DE Q q->first=root;//Q PRIMERO IGUAL A ROOT q->father=NULL;//PADRE IGUAL A NULL q->noofkeys=1;//NUMERO DE DATOS EN EL NODO root=q;//ROOT IGUAL A Q q->first->father=q; q->data[0].next->father=q; return;//RECORRIDO DE Q

} else {p=p->father;if(p->noofkeys < mkeys) {p->insertinanode(myp_nodo);return; } elsemyp_nodo=p->splitanode(myp_nodo); }

} }} }

int main() { int n,i,x,op;//DECLARACION DE VARIABLES node *p;//DECLARACION DE NODO coutn;//DATO A PEDIR btree b(n);//DECLARACION DEL OBJETO DE LA CLASE BTREE do{cout