Как использовать матрицу смежности - PullRequest
0 голосов
/ 13 апреля 2020

Эй, я новичок в программировании и пытаюсь сохранить следующий график в матрице смежности

graph

Я не уверен, как go сделать это. Я хочу, чтобы мой код считывал графическую информацию и сохранял ее в структуре данных. Из того, что я узнал из видео на YouTube, я узнал, что мне нужно создать структуру смежности, в которой у меня есть вершины (города = 21) и ребра (jourses = 43).

Пока у меня есть следующий код:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct value {
  int num;
  char start_vertex[250];
  char destination_vertex[250];
} value;

int main()
{
  const int nLines = 43; // number of lines in my text file
  FILE * fptr;
  //pointer to point to the first line as the next bit of code gets executed
  value * valuesPtr = malloc(sizeof(value) * nLines);

  if (!valuesPtr) {
    puts("cannot allocate memory");
    return -1;
  }

  if((fptr = fopen("energy.txt", "r")) == NULL)
  {
    perror("Error opening file");
    return -1;
  }
  int num[nLines];
  char start_vertex[nLines][250];
  char destination_vertex[nLines][250];

  for(int i = 0; i < nLines; i++ )
  {
      if (fscanf(fptr, "%249s %249s %d",
                 valuesPtr[i].start_vertex,
                 valuesPtr[i].destination_vertex,
                 &valuesPtr[i].num) != 3) {
        printf("errored file line %d\n", i);
        break;
      }

      num[i] = valuesPtr[i].num;
      strcpy(start_vertex[i], valuesPtr[i].start_vertex);
      strcpy(destination_vertex[i], valuesPtr[i].destination_vertex);

      printf("\nStart vertex: %s \nDestination vertex: %s \nWeight: %d\n\n",
             valuesPtr[i].start_vertex, valuesPtr[i].destination_vertex, valuesPtr[i].num);

      printf("\nStart vertex: %s \nDestination vertex: %s \nWeight: %d\n\n",
             start_vertex[i], destination_vertex[i], num[i]);
  }
  free(valuesPtr);
  fclose(fptr);

  return 0;
}

Может кто-нибудь показать мне, как я буду go делать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...