注意要有一个记录前面结点的指针。p是当前指针,r是当前指针的前一个结点,pnext为了记录下一个结点,预防找不到。
/*
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 *p=pHead;
ListNode *q=NULL;
ListNode *r=NULL;
while(p!=NULL){
ListNode *pnext=p->next;
if(pnext==NULL)
q=p;
p->next=r;
r=p;
p=pnext;
}
return q;
}
};