我在创建Graph实现时遇到问题

时间:2020-05-08 06:09:45

标签: c++ data-structures graph

即使我提供的限制(n变量)不是2,该代码也只接受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 :(得分:0)

问题在于,您在尝试设置节点的数据之前并未初始化大多数节点。您正在尝试使用指针,而不首先使它们实际上指向任何东西。您可以通过初始化循环中的节点来解决此问题。这是循环的更新版本:

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