これは、私のコードの関連部分を含むコードの概要です。
empprint 関数内で、bfs 印刷関数を呼び出します。この関数は、印刷する必要があるすべての印刷が完了するまで再帰的に呼び出します。その後、empprint 関数に戻るはずです。しかし、bfsprint の return ステートメントで empprint に戻ることはありません。
私が考えることができる1つの考えられる理由は、bfsprintが再帰的にそれ自体を呼び出すため、empprint関数の代わりにそれを呼び出した最後のbfsprintメソッドにのみ戻ることですが、それは私の問題を解決していないようです. 実行が終了しないコードに行き詰まっています。
void node::empprint(node* myroot)
{
//do something
bfsprint(c);
cout<<"pt 5"; //this cout is not reached
return;
}
void node::bfsprint(Linklist<node*> noddy)
{
// lot of code to implement breadth-first search. No issue
if(c.getHead()==NULL) cout<<"1" //this does print 1 to output
if(c.getHead()==NULL) return; //I think this should send me back to empprint
// and print "pt 5" on output but program hangs.
// instead of this happening
bfsprint(c);
}
これがメソッド内の他のコードの影響を受けている可能性があると誰かが考えている場合は、追加しますが、そうではないと思います.