一、題目描述
二、編寫代碼
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}