TADM2E 3.2
From Algorithm Wiki
<pre> typedef struct Node {
char *value; struct Node *next;
} Node;
int reverse(Node **head) {
Node *curr, *prev, *next;
if (!head || !(*head)) { return 0; }
curr = *head; prev = NULL; next = NULL;
while (curr) { next = curr->next; curr->next = prev; prev = curr; curr = next; }
*head = prev;
return 1;
} </pre>