题目描述
输入一个链表,反转链表后,输出新链表的表头。
解题思路
- 需要三个指针,当更改cur->next指向前一个指针的时候,要保存next,否则链表就会段
- 定义 prev(最初赋值为NULL即可),cur(指向头节点),reverserHead(反转后的头指针)
- 循环的时候,再定义一个next,保存cur->next指针
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead == NULL){
return NULL;
}
ListNode* reverserHead = NULL;
ListNode* prev = NULL;
ListNode* cur = pHead;
while(cur != NULL){
ListNode* nextNode = cur -> next;
if(nextNode == NULL){
reverserHead = cur;
}
cur -> next = prev;
prev = cur;
cur = nextNode;
}
return reverserHead;
}
};