反转单链表。
例子:
Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
要反转单个 LinkedList,我们可以保留两个指针 - 一个指向 currentNode,另一个指向前一个节点。 现在,我们可以迭代 LinkedList,并且对于每次迭代 -
currentNode.next
指向 prevNode
prevNode
移动到 currentNode
currentNode
移动到LinkedList中的nextNode
这是完整的解决方案:
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
class ReverseLinkedListExample {
private static ListNode reverseLinkedList(ListNode head) {
ListNode prevNode = null;
ListNode currentNode = head;
while(currentNode != null) {
ListNode nextNode = currentNode.next;
currentNode.next = prevNode;
prevNode = currentNode;
currentNode = nextNode;
}
return prevNode;
}
public static void main(String[] args) {
ListNode node = new ListNode(1);
node.next = new ListNode(2);
node.next.next = new ListNode(3);
node.next.next.next = new ListNode(4);
node.next.next.next.next = new ListNode(5);
ListNode rNode = reverseLinkedList(node);
while(rNode != null) {
System.out.print(rNode.val + " ");
rNode = rNode.next;
}
System.out.println();
}
}
# Output
$ javac ReverseLinkedListExample.java
$ java ReverseLinkedListExample
5 4 3 2 1
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.callicoder.com/reverse-linked-list/
内容来源于网络,如有侵权,请联系作者删除!