题目描述:
输入一个链表,反转链表后,返回新链表的表头节点

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead==nullptr||pHead->next==nullptr)//空或者只有一个节点
return pHead;
ListNode *pre,*mid,*post;
pre=pHead;
mid=pre->next;
while(mid){
post=mid->next;
mid->next=pre;
if(pre==pHead)//需要把第一个节点的next设置为nullptr
pre->next=nullptr;
pre=mid;
mid=post;
}
return pre;
}
};