Java で単方向リストを反転の方法
単方向リストを反転させるには、次の手順に従います。
- 反転後の新しいリンクリストを作成します。
- 元のリンクトリストを走査し、各ノードを新しいリンクトリストの先頭に挿入します。
- 新しいリンクリストを反転したリンクリストとして戻す。
以下はJavaで単方向リストを反転するために実装したサンプルコードです。
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
public class LinkedListReverse {
public static ListNode reverse(ListNode head) {
ListNode newHead = null;
while (head != null) {
ListNode nextNode = head.next;
head.next = newHead;
newHead = head;
head = nextNode;
}
return newHead;
}
public static void main(String[] args) {
// 创建一个示例链表 1->2->3->4->5
ListNode head = new ListNode(1);
ListNode second = new ListNode(2);
ListNode third = new ListNode(3);
ListNode fourth = new ListNode(4);
ListNode fifth = new ListNode(5);
head.next = second;
second.next = third;
third.next = fourth;
fourth.next = fifth;
// 反转链表
ListNode newHead = reverse(head);
// 打印反转后的链表值
ListNode currentNode = newHead;
while (currentNode != null) {
System.out.print(currentNode.val + " ");
currentNode = currentNode.next;
}
// 输出结果: 5 4 3 2 1
}
}
上記のサンプルコードでは、単方向連結リストを作成し、reverseメソッドを用いて逆転させています。最後に、逆転後の連結リストを辿り、各ノードの値を出力しています。出力結果は5 4 3 2 1となり、連結リストが正常に逆転されていることがわかります。