题解 | 反转链表

反转链表

https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

反转链表大致思路

  1. 首先找到尾指针
  2. 通过头指针与向尾指针利用头插法进行插入操作
  3. 重复上述步骤直至头指针指向尾指针

注意:本题需要判断头指针是否为空

/**
 * struct ListNode {
 *	int val;
 *	struct ListNode *next;
 *	ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
 #include <iostream>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* ReverseList(ListNode* head) {
        // write code here
        if (head == NULL) {
            return NULL;
        }

        ListNode* rear = head;
        while(rear->next != NULL) {
            rear = rear->next;
        }
        ListNode* p = head;
        ListNode* p_next = head->next;
        while(p != rear) {
            p->next = rear->next;
            rear->next = p;
            p = p_next;
            p_next = p->next;
        }

        return rear;
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
榕城小榕树:你是我见过最幸福的牛客男孩
点赞 评论 收藏
分享
醉蟀:你不干有的是人干
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务