**
题目描述
**
输入一个链表,反转链表后,输出新链表的表头。
思路
思路比较简单,就是弄出来三个指针,一个指向当前的遍历的节点,一个指向它的下一个节点,一个指向他的前面节点。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution{
public:
ListNode* ReverseList(ListNode* pHead)
{
ListNode* pre=nullptr;//第一个指针指向头结点前一个(现在是空)
ListNode* cur=pHead;//第二个指针指向头节点
ListNode* nex=nullptr;//第三个指针指向头结点下一个(现在是空)
while(cur)
{
//1 2 3 4,cur指向1
nex=cur->next;//nex为2,1->2
cur->next=pre;//null<-1,反转了
pre=cur;//pre->1
cur=nex;//cur->2
}
return pre;
}
};