Альтернативный способ печати графика на С - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь построить график в C, имеющий такую ​​структуру данных:

  • Фильтр Блума, представляющий график
  • Список всех узлов
  • первый узел графика (в градусах == 0)
  • Массив, содержащий все узлы, смежные с другим узлом

Я пытаюсь распечатать график, используя этот метод, но это нене начинать с известного first node:

file = fopen("out/graph.dot", "w");


fprintf(file, "digraph G {\n");

key_list = hash_table_keys(hash_table);
edge = NULL;
sub_kmer = NULL;

while ( key_list != NULL ) {
  sub_kmer = substr(key_list->key, 1, strlen(key_list->key));
  edge = kmer_append(sub_kmer);

  for ( i = 0; i < NUM_BASE; i++ ) {
    if ( bloom_filter_get(bloom_filter, edge[i]) ) {
      fprintf(file, "  %s ", key_list->key);
      fprintf(file, "-> ");
      fprintf(file, "%s \n", edge[i]);
    }
    free(*(edge + i));
  }

  free(sub_kmer);
  free(edge);

  key_list = key_list->next;
}

fprintf(file, "}");
fclose(file);

Где:

  • substr вычислить подстроку строки
  • kmer_append присоединить кподстрока символов (A, C, G, T)
  • bloom_filter_get проверяет, находится ли узел в фильтре Блума

Существуют ли методы для печати графика с использованием толькоfirst node, bloom filter и adjacenty array?

...