>544
最後のnextにNULLを入れれば
while(lp != NULL)
{
 lp->func();
 lp = lp->next;
}
でいーんじゃない?
最後のリンクに自分を入れるから余分なものが必要になっちゃってるのでは…?