Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Cria um nó vazio que pode ser adaptado para ser uma folha ou um nó interno*/
- node * make_node(int order){
- node * new_node;
- new_node = malloc(sizeof(node));
- new_node->keys = malloc(order * sizeof(unsigned long long int));
- new_node->pointers = malloc((order+1)*sizeof(void *)); // esses ponteiros podem ser de registros ou de nós, por isso usei void
- new_node->is_leaf = false;
- new_node->num_keys = 0;
- new_node->parent = NULL;
- new_node->next = NULL;
- new_node->order = order;
- return new_node;
- }
- void enqueue(node* nn, node *q){
- node *c;
- if(q == NULL){
- //q = make_node(nn->order);
- q = nn;
- q->next = NULL;
- }
- else{
- c = q;
- while(c->next != NULL){
- c = c->next;
- }
- c->next = nn;
- nn->next = NULL;
- }
- }
- node * dequeue(node *q){
- node * n = q;
- q = q->next;
- n->next = NULL;
- return n;
- }
- void busca_em_largura(node *root, char *out, node * queue){
- queue = make_node(root->order);
- node * n= malloc(sizeof(node*));
- node *c;
- //coloca a raiz na fila
- enqueue(root, queue);
- //c é o primeiro nó da fila, a raiz
- c = queue;
- while(queue != NULL){
- int i;
- //c = queue;
- for(i=0; i<= c->num_keys; i++ ){
- enqueue(c->pointers[i],queue);
- }
- n = dequeue(queue);
- print_node(n, out);
- }
- free(n);
- }
- void print_node(node *n, char *fo){
- node *c = n;
- FILE *f = fopen(fo,"a");
- int i;
- for (i = 0; i< c->num_keys; i++){
- fprintf(f, "%llu,",n->keys[i]);
- }
- i++;
- fprintf(f, "%llu\n",n->keys[i] );
- fclose(f);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement