题解 | #反转链表#

反转链表

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

/**
 * 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
        ListNode* newhead = nullptr;
        while (head!=nullptr) {
            ListNode* next = head->next;
            //保存下一个地址,因为下一步会断开该地址
            
            head->next = newhead;
            //把当前节点的指向新链表的头节点
            newhead = head;
            //把当前节点给了newhead
            head = next;
            //把head切换成原链表的下一个节点
        }
        return newhead;
    }
};

反转链表:

遍历方法:

1.建立一个新链表,做为当前当前节点指向的节点。

2.保存当前当前节点的下一个节点,因为下一步要把原节点的指向节点改成新链表节点。

3.将当前节点指向的节点修改为新链表节点

4.将当前节点赋值给新链表节点

5.切换当前节点到已保存的下一个节点。

6.如果当前节点的指针不是空的,则再执行一遍1-5,指导当前为null

全部评论

相关推荐

在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务