题目描述
输入一个链表,反转链表后,输出新链表的表头。
解题思路:题目不难,重要的是代码的完整性与鲁棒性,建立三个指针来维护信息,pre 、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==nullptr)
return nullptr;
ListNode* pre=NULL;
ListNode* cur=pHead;
ListNode* next=cur->next;
while(cur!=nullptr)
{
cur->next=pre;
pre=cur;
cur=next;
next=next==nullptr ? nullptr:next->next;
}
return pre;
}
};