要實現單向鏈表的反轉,可以采用迭代或遞歸的方式來實現。以下是使用迭代的方式實現單向鏈表的反轉的Java代碼:
public class LinkedList {
private Node head;
public void reverse() {
Node prev = null;
Node current = head;
Node next = null;
while (current != null) {
next = current.next;
current.next = prev;
prev = current;
current = next;
}
head = prev;
}
// Node class
private static class Node {
private int data;
private Node next;
public Node(int data) {
this.data = data;
}
}
}
使用上述代碼,可以通過調用reverse
方法來實現單向鏈表的反轉。
另外,以下是使用遞歸的方式實現單向鏈表的反轉的Java代碼:
public class LinkedList {
private Node head;
public void reverse() {
head = reverse(head, null);
}
private Node reverse(Node current, Node prev) {
if (current == null) {
return prev;
}
Node next = current.next;
current.next = prev;
return reverse(next, current);
}
// Node class
private static class Node {
private int data;
private Node next;
public Node(int data) {
this.data = data;
}
}
}
使用上述代碼,同樣可以通過調用reverse
方法來實現單向鏈表的反轉。
無論是迭代還是遞歸的方式,都需要定義一個Node
類來表示鏈表的節點,其中包含一個數據域和一個指向下一個節點的指針。在反轉時,需要使用三個指針來記錄當前節點、前一個節點和下一個節點,通過修改節點之間的指針來實現反轉操作。