Advertisement
Guest User

Untitled

a guest
Apr 30th, 2016
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. /*Cria um nó vazio que pode ser adaptado para ser uma folha ou um nó interno*/
  2. node * make_node(int order){
  3. node * new_node;
  4. new_node = malloc(sizeof(node));
  5. new_node->keys = malloc(order * sizeof(unsigned long long int));
  6. new_node->pointers = malloc((order+1)*sizeof(void *)); // esses ponteiros podem ser de registros ou de nós, por isso usei void
  7. new_node->is_leaf = false;
  8. new_node->num_keys = 0;
  9. new_node->parent = NULL;
  10. new_node->next = NULL;
  11. new_node->order = order;
  12. return new_node;
  13. }
  14.  
  15. void enqueue(node* nn, node *q){
  16. node *c;
  17.  
  18. if(q == NULL){
  19. //q = make_node(nn->order);
  20. q = nn;
  21. q->next = NULL;
  22. }
  23. else{
  24. c = q;
  25. while(c->next != NULL){
  26. c = c->next;
  27. }
  28. c->next = nn;
  29. nn->next = NULL;
  30. }
  31.  
  32. }
  33.  
  34. node * dequeue(node *q){
  35. node * n = q;
  36. q = q->next;
  37. n->next = NULL;
  38. return n;
  39. }
  40.  
  41. void busca_em_largura(node *root, char *out, node * queue){
  42.  
  43. queue = make_node(root->order);
  44. node * n= malloc(sizeof(node*));
  45.  
  46. node *c;
  47. //coloca a raiz na fila
  48. enqueue(root, queue);
  49. //c é o primeiro nó da fila, a raiz
  50. c = queue;
  51. while(queue != NULL){
  52. int i;
  53. //c = queue;
  54. for(i=0; i<= c->num_keys; i++ ){
  55. enqueue(c->pointers[i],queue);
  56. }
  57.  
  58. n = dequeue(queue);
  59. print_node(n, out);
  60.  
  61. }
  62.  
  63. free(n);
  64. }
  65.  
  66. void print_node(node *n, char *fo){
  67. node *c = n;
  68. FILE *f = fopen(fo,"a");
  69. int i;
  70. for (i = 0; i< c->num_keys; i++){
  71. fprintf(f, "%llu,",n->keys[i]);
  72. }
  73. i++;
  74. fprintf(f, "%llu\n",n->keys[i] );
  75. fclose(f);
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement