bool inorder(Node* L)
{
// BASE CASE: empty or 1 node
if (L == NULL)
return true;
else if (L->next == NULL)
return true;
// RECURSIVE CASE
// Check if the child list is inorder first
// If not, well the whole list is not in order!
if( !inorder(L->next) )
return false;
// If the child is inorder,
// the only thing to check is
// whether the first and second nodes are in order.
// The rest have already been check from the child list.
return L->data <= L->next->data;
}