一、题目描述
二、编写代码
2.1 编写一个 ListNode 类
package question5;
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
@Override
public String toString() {
return "ListNode{" +
"val=" + val +
'}';
}
}
2.2 编写 Solution 类
package question5;
public class Solution {
public static void main(String[] args) {
ListNode header = new ListNode(0);
ListNode node1 = header;
for (int i = 1; i < 6; i++) {
node1.next = new ListNode(i);
node1 = node1.next;
}
System.out.println("反转前的链表为:");
showList(header);
System.out.println();
System.out.println("反转后的链表为:");
reverseList(header);
showList(header);
}
private static void reverseList(ListNode header) {
if (header == null || header.next == null) {
return;
}
ListNode point = header.next;
ListNode next = null;
ListNode reverseHead = new ListNode(0);
while (point != null) {
next = point.next;
point.next = reverseHead.next;
reverseHead.next = point;
point = next;
}
header.next = reverseHead.next;
}
private static void showList(ListNode header) {
header = header.next;
while (header != null) {
System.out.println(header);
header = header.next;
}
}
}
2.3 执行结果
反转前的链表为:
ListNode{val=1}
ListNode{val=2}
ListNode{val=3}
ListNode{val=4}
ListNode{val=5}
反转后的链表为:
ListNode{val=5}
ListNode{val=4}
ListNode{val=3}
ListNode{val=2}
ListNode{val=1}