私はプロジェクトに取り組んでおり、配列の各インデックスに名前と値を格納できるように、ノードの配列をヒープとして構築しようとしています。基本的に、コンストラクターで最初のインデックスの値を -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 このプロジェクトではノードの配列を使用する必要があるため、ヒープの実装は変更できません。