/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* p = NULL;
ListNode* q = NULL;
if(pHead == NULL)
return NULL;
if(pHead->next){
p = pHead;
pHead = pHead->next;
p->next = NULL; //要注意这里需要指向NULL,是最后一个节点
}
else
return pHead;
while(pHead){
q = pHead;
pHead = pHead->next;
q->next = p; //拿出来的节点直接指向新链表的首节点
p = q; //更新p指针
}
return p;
}
};
不断的摘出原链表中的首节点,使其指向新链表的首节点,直至原链表为空。