Я столкнулся с проблемой при создании реализации Graph - PullRequest
0 голосов
/ 08 мая 2020

Код принимает только 2 значения, хотя я предоставляю ограничение (n-переменную), отличное от 2. Я не могу понять, что не так в Graph()

#include "iostream"
using namespace std;

class Node
{
private:
      int data;
      Node *next;
      friend class Graph;
};

class Graph
{
private:
      Node *head[20];
      int n;
public:
      Graph();
      void insert_node(Node *head);
      void insert_vertices(Node *ver);
};
Graph :: Graph()
{
      cout<<"\nEnter Number of Nodes:";
      cin>>n;
      head[n] = new Node();
      for(int i = 0; i < n; i++)
      {
            cout<<"\nEnter The Head_node:";
            cin>>head[i]->data;
            head[i]->next = NULL;
      }
}
int main() {
      Graph g;
      return 0;
}

1 Ответ

0 голосов
/ 08 мая 2020

Проблема в том, что вы не инициализируете большинство узлов до того, как попытаетесь установить их данные. Вы пытаетесь использовать указатели, не заставляя их сначала указывать на что-либо. Вы можете исправить это, инициализировав узлы в файле l oop. Вот обновленная версия вашего l oop:

for (int i = 0; i < n; i++)
{
    cout << "\nEnter The Head_node:";
    head[i] = new Node();
    cin >> head[i]->data;
    head[i]->next = NULL;
}
...