编程——两种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;
}
。
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;
}
相关文章推荐
- Json串转化成list的两种方法
- 读取xml文件转成List<T>对象的两种方法(附源码)
- Collections.sort方法对list的两种排序方式
- 在 App_Code 文件夹中同时使用两种语言编程的方法
- Java编程:删除 List 元素的三种正确方法
- 【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量
- 【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量(r)
- [Python3]创建多维list并赋值的两种方法
- 用VS2010构建MASM的编程环境,开始使用MASM(翻译自《Inetl汇编语言程序设计》一书的作者Kip R. Irvine的文章Getting Started with MASM),两种方法搭建IA-32汇编设计环境
- JavaScript强化教程——DOM编程(两种控制div移动的方法)
- 用Java集合中的Collections.sort方法对list排序的两种方法
- ASP.net组件编程中的两种事件编写方法
- Android编程使用WebView实现文件下载功能的两种方法
- 用Java集合中的Collections.sort方法对list排序的两种方法
- Java编程:删除 List 元素的三种正确方法
- 【Java并发编程】实现多线程的两种方法
- (转) 读取xml文件转成List<T>对象的两种方法
- golang并发编程的两种限速方法
- 两种方法求解 Reversing Linked List
- Revit 编程获取墙侧面的两种方法