課題の確認 01.c を完成させる 01.exe を作る ( 次の三つのいずれでもよいから一つだけやる ) cc 01.c ilist.c icell.c cc 01.c ilist.obj icell.obj /* すでに icell.obj, ilist.obj がある */ cc -c 01.obj ; cc 01.obj ilist.obj icell.obj /* * nth_IList * number がリストの何番目かを答える関数を作る * 例 1 : List が 1,2,3,4 で、number が 3 の時には、2 が答になる * 例 2 : List が 1,2,3,4 で、number が 1 の時には、0 が答になる * 例 3 : List が 1,2,3,4 で、number が 5 の時には、-1 が答になる */ int nth_IList ( IList *object, int number ) { /* 例 1 : object が 1,2,3,4 で、number が 3 の時には、2 が答になる 最初 object --> [1] --> [2] --> [3] --> [4] --> NULL ICell *cp = object -> top; cp は先頭の要素をさす cp | v object --> [1] --> [2] --> [3] --> [4] --> NULL cp -> data == 1 もし、numner の値が 1 なら、ここにあるので 0 が答 つまり、 cp -> data == number が成立する だが、そうではないので、次をみたい cp = cp -> next; cp | v object --> [1] --> [2] --> [3] --> [4] --> NULL cp -> data == 2 もし、numner の値が 2 なら、ここにあるので 1 が答 つまり、 cp -> data == number が成立する だが、そうではないので、次をみたい cp = cp -> next; cp | v object --> [1] --> [2] --> [3] --> [4] --> NULL cp -> data == 3 もし、numner の値が 3 なら、ここにあるので 2 が答 つまり、 cp -> data == number が成立する 実際にそうなので、答は 2 となる。 == ICell *cp = object -> top; int th = 0; if ( cp -> data == number ) { return th; /* 答がみつかったら終 * } th++; cp = cp -> next; if ( cp -> data == number ) { return th; } th++; cp = cp -> next; if ( cp -> data == number ) { return th; } cp = cp -> next; .... /* cp == NULL になったら御仕舞い */ == ICell *cp = object -> top; int th = 0; while ( cp != NULL ) { if ( cp -> data == number ) { return th; // 答がみつかったら終り } th++; cp = cp -> next; } */