struct listItem { int item; // like the CAR of a list listItem* rest; // like the CDR of a list };Since a pointer to a list item gives you access to the whole list behind it, call a pointer to a list item a list:
typedef listItem* list;To create an empty list, use the built-in C++ constant NULL to initialize a list item pointer to nothing:
list lst = NULL;