剑指Offer(牛客版)--面试题24:反转链表

    xiaoxiao2023-10-27  175

     

    题目描述:输入一个链表,反转链表后,输出新链表的表头。

     

    分析:

     

     

    完整代码:

     

    /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* ReverseList(ListNode* pHead) { //检查输入的合法性 if(pHead == nullptr) return nullptr; /*******创建三个指针*******/ //创建链表反转后的头节点指针 ListNode* ReverseHead = nullptr; //创建链表当前节点指针 ListNode* pNode = pHead; //创建链表当前节点前一个节点指针 ListNode* preNode = nullptr; //判断当前节点是否存在 while(pNode != nullptr) { //创建当前节点的下一个节点指针 ListNode* pNext = pNode->next; //判断下一个节点是否存在 if(pNext == nullptr) ReverseHead = pNode; //如果下一节点不存在,则此节点就是反转链表的头节点(因为此节点就是末尾的节点) /*******如果下一个节点存在******/ //反转链表 pNode->next = preNode; //当前节点和下一个节点都需要往后退 preNode = pNode; pNode = pNext; } //返回反转链表的头节点 return ReverseHead; } };

     

    最新回复(0)