输入一个链表,反转链表后,输出链表的所有元素。
题目考察链表反转,但是挖坑不是反转本身,而是题目的描述再次不清晰:什么叫“反转链表后输出链表所有元素”?给的代码框架只有一个函数ReverseList
,返回值类型是ListNode*,输出不输出和我有什么关系?
class Solution{
public:
ListNode* ReverseList(ListNode* pHead){
if (pHead == NULL){
return NULL;
}
if (pHead->next == NULL) {
return pHead;
}
ListNode* pBefore = pHead;
ListNode* p = pHead->next;
ListNode* pAfter = p->next;
while (pAfter != NULL){
p->next = pBefore;
pBefore = p;
p = pAfter;
pAfter = pAfter->next;
}
p->next = pBefore;
pHead->next = NULL; //这句一定要加上,因为逆序后再遍历,需要判断出链表结束,也就是节点的next等于NULL
return p;
}
};