void problem1Solver(Page_tp page) { .... } void problem2Solver(Page_tp page) { .... } void userSearch(Page_tp page) { problem1Solver(page); /* まず、課題 1 を解いて */ problem2Solver(page); /* 次に、課題 2 を解いて */ }
まずは課題 1 について。ポイントは、
for(i = 0; i < getNumLinks(page); i++) { Page_tp child = traceNthLink(page, i); printf("Name: %s", getName(child)); }
(gdb) print page [return] /* アドレス値が分かる */ (gdb) print *page [return] /* 中身が分かる */とかで見れます。多分、あり得ないアドレス値が入っているんでしょう。
void p2search(Page_tp page, int depth) { ...... Page_tp child = ....; p2search(child, depthd+1); ...... }という作りにすると便利です。枝に向かうほど depth が大きくなります。大域変数の int depth とか作ると訳が分からなくなります。やめときましょう。
2002.11.05/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp