leetcode206:反转链表

package com.mxnet;

import java.util.Stack;

public class Solution206 {

    public static void main(String[] args) {

    }

    /**
     * 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
     * @param head
     * @return
     * 思路:
     * 1. 因为要完成链表反转,则只需改变链表的链接顺序
     * 2. 即将当前节点作为下一个节点的下一个节点
     * 3. 保存当前节点的前驱节点和后继节点,完成链表的转换
     * 4. 遍历链表完成反转
     */
    public ListNode reverseList(ListNode head) {
        //记录前驱节点
        ListNode prev = null;
        //使用辅助指针指向头节点
        ListNode cur = head;
        //循环遍历链表所有节点,完成反转
        while (cur != null){
            //记录当前节点的下一个节点
            ListNode next = cur.next;
            //使当前节点指向它的前驱节点
            cur.next = prev;
            //在进行下一次循环时 使当前节点成为下一个节点的前驱节点
            prev = cur;
            //移动当前节点
            cur = next;
        }
        return prev;
    }

}
posted @ 2022-09-05 21:45  mx_info  阅读(7)  评论(0编辑  收藏  举报