每当我在B +树中插入一个新元素时,它似乎都会在插入功能开始之前用要插入的数据点重写每个数据点。我发现的唯一可能原因是我的bPLus对象似乎无法访问保存在每个节点中的Professor结构。就像在调试器中一样,所有Professor值都是空的。另一方面,键(cle)起作用并且可以访问。可能与指针有关?
当我不使用按键时,如果我从main调用某些功能,而其他功能可以使用,则会出现“读取字符串字符错误”的提示。如果从类内部的工作函数中调用这些函数,这些函数将起作用。我觉得这些问题都是相关的。
我已经囊括了所有可能涉及的内容,我很茫然。
struct Professeur {
string ID;
string nom;
string dept;
string salaire;
};
struct Noeud {
Professeur *valeur[3];
string cle[3];
Noeud *enfant[4];
Noeud *parent;
Noeud *suivant;
bool isLeaf;
Noeud(){
for (int i = 0; i < 3; i++) {
valeur[i] = NULL;
enfant[i] = NULL;
cle[i] = "vide";
}
isLeaf = 0;
parent = NULL;
suivant = NULL;
enfant[3] = NULL;
}
};
class bPlus {
private:
Noeud* racine;
public:
bPlus() {
racine = new Noeud;
racine->isLeaf = 1;
}
void inserer(Professeur x) {
if (findValue(x.nom)) {
return;
}
if (racine->isLeaf) {
//do the insertion
}
else {
//find leaf, do insertion
}
}
int main() {
Professeur profs[12];
//gather data from text file
for (int i = 0; i < 12; i++) {
profs[i].ID = ID[i];
profs[i].nom = nom[i];
profs[i].dept = dept[i];
profs[i].salaire = salaire[i];
}
bPlus arbre;
for (int i = 0; i < 3; i++) {
arbre.inserer(profs[i]);
}
return 0;
}