Погодите, не очень понял, т. е. вы хотите сказать, что у вас даже такая программа вылетает с ошибкой: int main(int argc, char* argv[]) { int act = 1; }
так?
Естественно ошибка возникает в return (item->next == NULL)? 1: 0;
у вас при вводе 1 в item содержится NULL, а вы пытаетесь его разименовать и обратиться к несуществующему смещению «next»