您的位置:首页 > 编程语言

编程——两种list的翻转方法

2015-04-28 15:43 176 查看
对于题目相信大家都比较熟悉了,下面就直接上代码了,其中没有给出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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: