私はゆっくりとプログラムを書いていて、バイナリツリーを教えようとしています。このプログラムは、そのデータを格納するためにツリーを使用する電話帳です。私は現在、私のfindOrInsert関数に固執しています。もともと私はそれをオープンエリアに挿入するだけでした。今、私はそのデータを追加する前に既に存在するかどうかを確認したい。それでは、ユーザーにプロンプトを出す機能から戻ってきたら、既に同じデータがあります。私はいくつかのことを試みましたが運はありません。私はちょうどゼロからそれを書き直すことを試みるかもしれない。その前に私は助けを得ることができるかどうかを見たいと思っていました。バイナリツリー:同じ値を見つける
これは私が現在持っているものです。
struct treeNode * findOrInsert(struct treeNode *p, Entry e) {
if (p == NULL) {
p = createNode(NULL, NULL, e);
}
else if (strcmp(e.fName, p->data.fName) < 0) {
p->left = findOrInsert(p->left, e);
}
else if (strcmp(e.fName, p->data.fName) > 0) {
p->right = findOrInsert(p->right, e);
}
else {
if (strcmp(e.lName, p->data.lName) < 0) {
p->left = findOrInsert(p->left, e);
}
else if (strcmp(e.lName, p->data.lName) > 0) {
p->right = findOrInsert(p->right, e);
}
else {
return p;
}
}
return p;
}
struct treeNode * createNode(struct treeNode *q, struct treeNode *r, Entry e) {
struct treeNode * newNode;
newNode = (struct treeNode*)(malloc(sizeof(struct treeNode)));
newNode->data = e;
newNode->left = q;
newNode->right = r;
return newNode;
}
何か助けてください!
私はそれを試みました。別の何かをしなければならなかった。今はうまくいくようです。ありがとうございました! – arthos455