题目描述
输入一个链表,反转链表后,输出新链表的表头。
思路:反转链表的表头即为原始链表的尾结点。
考虑:1、输入的链表头指针是NULL,返回该表头指针
2、输入的链表只有一个节点,返回表头指针
3、输入的链表有多个节点,将节点的next指针指向前一个节点,进行反转链表,尾结点即为反转链表的表头
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead==NULL || pHead->next==NULL)
return pHead;
ListNode* preNode=NULL;//前一个节点
ListNode* reNode=NULL;//头指针
while(pHead!=NULL)
{
ListNode* pNext=pHead->next;//保存链表的下一个结点
if(pNext==NULL)//当前结点为尾结点
reNode=pHead;
pHead->next=preNode;
preNode=pHead;
pHead=pNext;
}
return reNode;
}
};