题目描述
给你一个链表,你需要将他反转的链表新的头部返回出去。
Solution
最佳操作,三指针推动,一个指向前驱pre,一个指向当前节点now,一个指向后继节点nex,依次向后推进,并且可以保证链表信息不丢失。
/*
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* now = pHead;
ListNode* nex = NULL;
while(now){
nex = now->next;
now->next = pre;
pre = now;
now = nex;
}
return pre;
}
};