题目描述
输入一个链表,反转链表后,输出新链表的表头。
代码
/*
struct ListNode {
int val;
struct ListNode next;
ListNode(int x) :
val(x), next(NULL) {
}
};/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead)
{
if(NULL == pHead)
{
return NULL;
}
ListNode *p=NULL;
ListNode *p2=NULL;
ListNode *p3=NULL;
p = pHead;
while(p != NULL)
{
p2 = p->next;
p->next = p3;
p3 = p;
p = p2;
}
return p3;
}
};
运行结果
运行时间:3ms
占用内存:472k
解题思路
用了三个辅助指针 p p2 p3,遍历的过程中将链表反转。