0

私はプロジェクトに取り組んでおり、配列の各インデックスに名前と値を格納できるように、ノードの配列をヒープとして構築しようとしています。基本的に、コンストラクターで最初のインデックスの値を -1 に設定して、後で空かどうかを判断できるようにする必要があります (-1 の値は空のインデックスを示します)。

問題は、セグ フォールトが発生していて、その理由がわからないことです。間違ったコードは次のとおりです。

ヘッダー ファイル:

class tripe
{

 public:

  tripe();
  void initialize(string filename); //initialize tripe data struct
  void insert(string name, int grade); //insert given pair into structure
  void search(string prefix); //print list of entries that matches prefix
  void findMin(); //print min grade entry
  void buildheap(string name,string grade,int size);

  heapnode *heap[100]; //TROUBLESOME VARIABLE
  trinode *head;
  trinode *let[25];

};

class heapnode
{

 public:

  string student;
  int score; //WANT THIS TO BE -1 FOR FIRST INDEX OF HEAP ARRAY
};

C++ ファイル:

tripe::tripe()
{
 for (int i = 0; i < 100; i++)
    {
      heap[i] = NULL;
    }

  heap[1]->score = -1; //SEG FAULT
}

実際、ヒープ配列のスコア変数にアクセスしようとすると、必ずセゴートが発生することに気付きました。私のコンストラクタは何か他のことをする必要がありますか? この問題の助けをいただければ幸いです。

PS このプロジェクトではノードの配列を使用する必要があるため、ヒープの実装は変更できません。

4

1 に答える 1