如何在Java中使用函数来实现链表的反转?
发布时间:2023-07-07 21:14:16
链表的反转是一个常见的编程问题。在Java中,可以使用函数来实现链表的反转。下面是一个使用函数实现链表反转的示例代码,总共1000字左右。
1. 首先,定义一个 链表节点类(ListNode)来表示链表的节点。节点包含一个值(value)和一个指向下一个节点(next)的指针。
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
this.next = null;
}
}
2. 创建一个函数(reverseList),该函数接受一个链表的头节点作为参数,并返回反转后的链表的头节点。
public ListNode reverseList(ListNode head) {
ListNode prev = null; // 用于记录上一个节点
ListNode curr = head; // 当前节点
while (curr != null) {
ListNode nextTemp = curr.next; // 临时变量,用于保存下一个节点
curr.next = prev; // 反转当前节点的指针指向上一个节点
prev = curr; // 更新上一个节点为当前节点
curr = nextTemp; // 将当前节点更新为下一个节点
}
return prev; // 返回反转后的链表头节点
}
3. 创建一个函数(printList),该函数接受一个链表的头节点作为参数,并按顺序打印链表中的值。
public void printList(ListNode head) {
ListNode curr = head;
while (curr != null) {
System.out.print(curr.val + " -> ");
curr = curr.next;
}
System.out.println("null");
}
4. 测试代码
public static void main(String[] args) {
// 创建一个链表 1 -> 2 -> 3 -> 4 -> 5
ListNode head = new ListNode(1);
ListNode node2 = new ListNode(2);
ListNode node3 = new ListNode(3);
ListNode node4 = new ListNode(4);
ListNode node5 = new ListNode(5);
head.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
// 打印原链表
System.out.println("Original List:");
printList(head);
// 反转链表
ListNode reversedHead = reverseList(head);
// 打印反转后的链表
System.out.println("Reversed List:");
printList(reversedHead);
}
5. 运行结果
Original List: 1 -> 2 -> 3 -> 4 -> 5 -> null Reversed List: 5 -> 4 -> 3 -> 2 -> 1 -> null
通过上述示例代码可以看到,通过使用函数来实现链表的反转是比较简单的。只需要遍历链表,依次将每个节点的next指向上一个节点即可实现链表的反转。最后,打印反转后的链表,验证反转是否正确。这种方法的时间复杂度为O(n),其中n为链表的长度。
