1、题目
输入一个长度为n链表,反转链表后,输出新链表的表头。
如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:
1、思路
用三个指针来分别表示上一节点,当前节点和下一节点,让当前节点指向上一节点,当前节点和下一节点之间断开,上一节点移动到当前节点,当前节点移动到下一节点,直到当前节点指向NULL的时候停止,返回上一节点就可以了。
2、代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *pre = NULL;
ListNode *cur = pHead;
while(cur){
ListNode *tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
};