206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 
示例 2:
输入:head = [1,2] 输出:[2,1]
示例 3:
输入:head = [] 输出:[]
package com.coco.learnalgorithmone.linkedlist;import com.coco.learnalgorithmone.linkedlist.entity.ListNode;import com.coco.learnalgorithmone.linkedlist.util.LinkedListUtils;/*** subject* 206. 反转链表* 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。** 示例 1:* 输入:head = [1,2,3,4,5]* 输出:[5,4,3,2,1]*/public class ReverseList {public static void main(String[] args) {int[] arr = {1, 2, 3, 4, 5};ListNode head = reverseList1(LinkedListUtils.convertToLinkedList(arr));LinkedListUtils.printListNode(head);}public static ListNode reverseList1(ListNode head) {ListNode pre = null;ListNode curr = head;while (curr != null) {ListNode tmp = curr.getNext();curr.setNext(pre);pre = curr;curr = tmp;}return pre;}public static ListNode reverseList2(ListNode head) {ListNode pre = null;ListNode post;for (ListNode curr = head; curr != null; curr = post) {post = curr.getNext();curr.setNext(pre);pre = curr;}return pre;}}
