C ++:B +树插入中的数据丢失

时间:2019-04-09 01:47:42

标签: c++ database pointers b-plus-tree

每当我在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;
}

0 个答案:

没有答案