//C++11,其他版本将nullptr改为NULL或0即可
template<class T>
class List{
struct ListNode
{
T value;
ListNode *next;
ListNode(const T&_value,ListNode *_next = nullptr)
:value(_value),next(_next){}
};
public:
void Reverse();
private:
ListNode *head;
};
template<class T>
void List<T>::Reverse()
{
if(head != nullptr && head->next != nullptr)
{
ListNode *nodePre = nullptr;
ListNode *nodeCur = head;
ListNode *nodeNex = head->next;
while(nodeNex != nullptr)
{
nodeCur->next = nodePre;
nodePre = nodeCur;
nodeCur = nodeNex;
nodeNex = nodeCur->next;
}
head = nodeCur;
}
}