Θ(n)反转单链表
(算法导论第三版第十章10.2-7)
template<typename T>
void reverses(Single_L<T> &l)
{
if(l.head == nullptr || l.head == l.tail) return;
HalfNode<T> * tail = l.head;
HalfNode<T>*pre = l.head;
HalfNode<T>*current = pre->next;
HalfNode<T>*next;
while (current!= nullptr)
{
next = current->next;
current->next = pre;
pre = current;
current = next;
}
l.head = pre;
}