《剑指offer》-反转链表

输入一个链表,反转链表后,输出链表的所有元素。

题目考察链表反转,但是挖坑不是反转本身,而是题目的描述再次不清晰:什么叫“反转链表后输出链表所有元素”?给的代码框架只有一个函数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;
	}
};
原文地址:https://www.cnblogs.com/zjutzz/p/6616426.html