Why would you want to make p point to newly allocated memory and immediately change your mind and make p equal to L? That is a silly memory leak.
Type error. The parameter of successors is supposed to be a list. But p->head + 1 is an integer.