import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */
    public ListNode reverse_cows (ListNode head) {
        ListNode prev = null;
        ListNode cur = head;
        while (cur != null) {
            ListNode temp = cur.next;
            cur.next = prev;
            prev = cur;
            cur =  temp;
        }
        return prev;
    }
}

本题知识点分析:

1.链表反转

2.数学模拟

本题解题思路分析:

1.方法一:可以先获取链表所有值,然后反转之后,再重建链表,然后返回出去,不过会更复杂,没必要

2.方法二:直接原地进行翻转

3.先保存前一个结点,当前节点,下一个节点

4.先让当前节点指向上一个节点

5.然后把当前节点赋值给上一个节点

6.最后把下一个节点赋值给当前节点

建议:画个图会好做很多,链表就是画图,然后指针指向就可以了

本题使用编程语言: Java

如果您觉得本篇文章对您有帮助的话,可以点个赞支持一下,感谢~