反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
解题思路:利用双指针头插法来进行翻转,代码如下:
```cpp
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* newlist=NULL;//创建一个空表
ListNode* begin=head;//创建一个指向head的头指针
while(begin!=NULL){
ListNode* t=begin->next;//用来储存begin的下一个节点
begin->next=newlist;//将begin指向newlist
newlist=begin;//newlist后移动到begin的位置
begin=t;//begin向后移动
}
return newlist;
}
};
```