head->'a'->'c'->'d' というリストになってるとするわな。
で、これに'b'を追加する、と。
72行の時点で、pは'c'をさしてるわな。rは'd'。
q->next=r; //'b'->'d',
p->next=q; //'a'->'c'->'b'->'d'
つなぎかたがまちがっているのは一目瞭然やね。