• + 5 comments

    Thought I'd share my recursive solution:

    Node* Reverse(Node* node)
    {
      // If empty list, return
      if (!node) return NULL;
      
      // Otherwise, swap the next and prev
      Node *temp = node->next;
      node->next = node->prev;
      node->prev = temp;
      
      // If the prev is now NULL, the list
      // has been fully reversed
      if (!node->prev) return node;
      
      // Otherwise, keep going
      return Reverse(node->prev);
    }