Если у вас есть функция extern, вы должны проверить все аргументы.
В вашем случае head_ref
может быть НЕДЕЙСТВИТЕЛЬНЫМ, поэтому:
if (head_ref != NULL)
{
...
}
И здесь будет ошибка: while(k--)
, потому что вы пытаетесь получить свойство в (возможно) NULL.
Должно быть while(k-- && temp != NULL)
.
А переменные должны называться в качестве их свиньи, так что же делает k
? ;)
Ps. Если у вас нет видимого модификатора (статический - приватный, extern - публичный), то по умолчанию используется extern.