题目
给反转一个单链表
示例
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
分析
一个节点一个节点的反向指,需要注意的就是当当前节点的next为null时,此时是最后一个节点,为反转后的
头结点。
using namespace std;
struct ListNode
{
ListNode* next;
int val;
ListNode() :next(nullptr), val(-1){};
};
class MyClass
{
public:
ListNode* reverseList(ListNode* head) {
if (head == nullptr)
{
return nullptr;
}
ListNode* preNode = nullptr;
ListNode* nextNode = nullptr;
ListNode* reverseNode = nullptr;
ListNode* node = head;
while (node != nullptr){
nextNode = node->next;
if (nextNode == nullptr){
reverseNode = node;
}
node->next = preNode;
preNode = node;
node = nextNode;
}
return reverseNode;
}
};