/*
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 *pre=NULL;
ListNode *cur=pHead;
while(cur!=NULL){
ListNode *tmp=cur->next;//暂时存储当前节点的下一个节点
cur->next=pre;//链表方向的逆转(将pre节点连接)
pre=cur;//更新pre节点的值,为下次逆转做准备
cur=tmp;//更新当前节点
}
return pre;
}
};
借鉴了别人的思路,其中在循环中第二行是最重要的,然后就是pre节点和当前节点的更新