Node* reverse(Node* p){ Node* head = p; if(p == nullptr) //nullptr requires c++11 return head; head = cons(car(p),nullptr); p = cdr(p); while(p != nullptr){ head = cons(car(p),head); p = cdr(p); } return head; }