赞
踩
这个反转方法采用的是迭代方式,它逐个将原链表的节点移动到新链表的头部
public class LinkedList { // 定义链表节点 static class Node { int value; Node next; Node(int value) { this.value = value; this.next = null; } } // 反转链表的方法 public Node reverseList(Node head) { Node prev = null; Node current = head; while (current != null) { Node nextTemp = current.next; // 保存下一个节点 current.next = prev; // 反转当前节点 prev = current; // 移动prev到当前节点 current = nextTemp; // 继续到下一个节点 } return prev; // 新的头节点是prev } // 用于打印链表的辅助方法 public void printList(Node node) { while (node != null) { System.out.print(node.value + " "); node = node.next; } System.out.println(); } // 主方法,用于测试链表反转 public static void main(String[] args) { LinkedList list = new LinkedList(); Node head = new Node(1); head.next = new Node(2); head.next.next = new Node(3); head.next.next.next = new Node(4); System.out.println("Original List:"); list.printList(head); head = list.reverseList(head); System.out.println("Reversed List:"); list.printList(head); } }
时间复杂度为 O(n),空间复杂度为 O(1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。