\begin{algorithm}
        \caption{Reverse Singly Linked List}
        \begin{algorithmic}
        \INPUT a singly linked list $L$ with $L.head$ pointing to its first element
        \OUTPUT a reversed singly linked list $L$
        \STATE $prev = NIL$
        \STATE $cur = L.head$
        \WHILE{$cur \ne NIL$}
            \STATE $next = cur.next$
            \STATE $cur.next = prev$
            \STATE $prev = cur$
            \STATE $cur = next$
        \ENDWHILE
        \STATE $L.head = prev$
        \end{algorithmic}
        \end{algorithm}