反转一个单链表

题目

	给反转一个单链表
	示例
	输入: 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;
	}
};

你可能感兴趣的:(学习笔记)