typedef struct _Node {
int data;
struct _Node * next;
} Node;
Node * Node_reverse(Node *node) {
if (node == NULL) return NULL;
if (node->next == NULL) return node;
Node * p = Node_reverse(node->next);
if (p != NULL) {
p->next = node;
node->next = NULL;
}
return node;
}