题目:定义一个函数,输入一个链表的头结点,反转该链表并返回反转链表后的头结点。
我们可以借助图来分析一下:
我们定义一个新的头结点为head,将begin指向head->_next,当begin不为空的时候,tmp = begin,begin = begin->_next,此时tmp是我们要摘下来的结点。tmp->_next = head; head = tmp;就完成了结点链接的操作。当循环走完时,_head = head.便完成了链表的逆置。
代码如下:
template<class T>
struct ListNode
{
T _value;
ListNode<T>* _next;
ListNode(const T& value)
:_value(value)
,_next(NULL)
{}
};
template<class T>
class List
{
public:
List()