>>978
josephus( t, M );// line30-41と差し替え

void josephus(struct node * t, int i)
{
if( t != t->next )// 再起を抜ける条件
{
for( int j = 1; j < i; j++ ) // i番目のnodeを探す
t = t->next;
printf("%3d -->", t->next->key);
struct node* x = t->next;
t->next = t->next->next;
free(x);
j++;
if (j%10 == 0) printf("\n");
josephus( t, i );// Recursive Call!!
}
else
printf("%3d\n\n", t->key);//終端
}

暇だからやってみた('A`)
このまま使うならプロトタイプを忘れずに