在网上找了一些代码,很多没有写测试用例跑结果,有的代码本身有错误,博主在本地写了一份有测试用例的代码,实际测试可以正确运行。代码如下
package com.company;
import java.util.LinkedList;
public class ReverseLinkedList {
//翻转单链表
static class Node{
Node next = null;
int val = 0;
public Node(int val) {
this.val = val;
}
}
public static void main(String[] args) {
Node head = new Node(1);
Node head2 = new Node(2);
Node head3 = new Node(3);
Node head4 = new Node(4);
head.next = head2;
head2.next = head3;
head3.next = head4;
System.out.println("Before reverse");
printList(head);
head = reverseList(head);
System.out.println("After reverse");
printList(head);
}
public static Node reverseList(Node head) {
Node pre = null;
Node next = null;
while(head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
//pre指向最后一个节点
head = pre;
return head;
}
public static void printList(Node head) {
while(head != null) {
System.out.println(head.val);
head = head.next;
}
}
}
运行结果
Before reverse
1
2
3
4
After reverse
4
3
2
1
参考了文章 https://stackoverflow.com/questions/52730477/java-link-list-head-cannot-found