問題の機能:
struct node* findNext(struct node *root, struct node *ldr, int *p) {
// Check if there are nodes in the tree.
if(p == 0){
if (root != NULL) {
// correct organ/bt combo
if(cmpOrgan(root, ldr) == 1){
if (strcmp(root->organ.name, ldr->organ.name) != 0){
if(cmpDates(root, ldr) == 1){
p = 1;
return root;
}
// The leader has been in longer then root
if(cmpDates(root, ldr) == 2){
return findNext(root->left, ldr, p);
}
}
else{
findNext(root->left, ldr, p);
findNext(root->right, ldr, p);
}
}
if(cmpOrgan(root, ldr) == 2){
return findNext(root->left, ldr, p);
}
if(cmpOrgan(root, ldr) == 3){
return findNext(root->right, ldr, p);
}
}
}
return NULL;
}
ここで、この部分でこの再帰関数から抜け出したいと思います。
if (strcmp(root->organ.name, ldr->organ.name) != 0){
if(cmpDates(root, ldr) == 1){
p = 1;
return root;
}
私がこれをやろうとしている方法は、関数へのグローバルポインターをスキャンし、関数を中断したいときにそれを 1 に変更することです。私の目標は、ブレーク ポイントで現在のルートを返すことです。これは可能ですか?これを行うことで、メインのポインターを初期化しています。
int *p = 0;
*p = 1 で値を設定しようとすると、プログラムがクラッシュします。私はポインタで基本的な何かが欠けていると確信していますが、コーディングにはまだ慣れていないので何がわかりません。誰でも私を助けることができますか?私が気付いていない、これを行うよりも簡単な方法はありますか?事前に助けてくれてありがとう。