对于题目相信大家都比较熟悉了,下面就直接上代码了,其中没有给出list的creat函数,有兴趣的同学可以自己实现。
1. 模板node的定义
template<class T> class TNode
{
public:
TNode(const T& data) : next_(0)
{
data_ = data;
}
~TNode()
{
}
public:
T data_;
TNode<T>* next_;
};
2. 非递归方式
TNode<T>* reverse(TNode<T>* head)
{
TNode<T>* pre = 0;
TNode<T>* suc = 0;
while ( head != 0 )
{
suc = head->next_;
head->next_ = pre;
pre = head;
head = suc;
}
head = pre;
return head;
}
3. 递归方式
TNode<T>* recurReverse(TNode<T>* head)
{
if ( 0 == head || 0 == head->next_ )
{
return head;
}
TNode<T>* finalHead = recurReverse(head->next_);
head->next_->next_ = head;
head->next_ = 0;
return finalHead;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)