题解 | #反转链表#
反转链表
http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
struct ListNode* ReverseList(struct ListNode* pHead ) {
// write code here
struct ListNode* pCur = pHead;
struct ListNode* pPrev = NULL;
struct ListNode* pNext = pHead;
if (!pHead)//注意考虑如果链表为空的情况
return NULL;
while(pCur->next != NULL)
{
pNext = pCur->next;
pCur->next = pPrev;
pPrev = pCur;
pCur = pNext;
}
pCur->next = pPrev;//注意考虑最后一个节点与前面节点的链接
return pCur;
}本题不难,用三个指针即可。
一个指针记录当前节点(pCur),一个指针记录下一个节点,做中间变量保存(pNext),一个指针记录上一个节点用作反转(pPrev)。


