题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if (!pHead || !(pHead->next)) return pHead;
//申请两个指针,一个记录前驱结点,一个记录后继结点
ListNode* q = NULL;
ListNode* r = pHead->next;
while (pHead) {
pHead->next = q;
q = pHead;
pHead = r;
//r为空时,再后移,会报错,
if (r) r = r->next;
}
return q;
}
};