自学内容网 自学内容网

牛客TOP101:反转链表

1. 题目描述

在这里插入图片描述

2. 解题思路

  简单粗暴的写法,就是从头到尾挨个将所有结点的指向翻转即可。需要注意的是,翻转之后会失去原有指向的结点,所以需要提前保存。
  具体做法就是,使用cur标记当前结点,代表这我们将要翻转这个结点的指向,prev指向它的前面的一个结点,next保存它后面的一个结点,然后循环修改cur的指向结点就可以了。

3. 代码实现

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param head ListNode类 
     * @return ListNode类
     */
    ListNode* ReverseList(ListNode* head) {
        if(head == nullptr) return head;
        ListNode* prev = nullptr, *cur = head, *next = cur->next;

        while(cur)
        {
            cur->next = prev;
            prev = cur;
            cur = next;
            if(next)
                next = next->next;
        }
        return prev;
    }
};

原文地址:https://blog.csdn.net/qq_62321047/article/details/140449432

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!