在Java中使用temp变量递归地反转链表可以通过以下步骤实现:
class ListNode {
int val;
ListNode next;
ListNode(int val) {
this.val = val;
}
}
reverseList
,接收一个链表头节点作为参数,并返回反转后的链表头节点。public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode temp = reverseList(head.next);
head.next.next = head;
head.next = null;
return temp;
}
reverseList
函数进行链表反转。public static void main(String[] args) {
ListNode head = new ListNode(1);
head.next = new ListNode(2);
head.next.next = new ListNode(3);
head.next.next.next = new ListNode(4);
head.next.next.next.next = new ListNode(5);
ListNode reversedHead = reverseList(head);
// 输出反转后的链表
while (reversedHead != null) {
System.out.print(reversedHead.val + " ");
reversedHead = reversedHead.next;
}
}
以上代码实现了在Java中使用temp变量递归地反转链表。在这个例子中,我们定义了一个链表节点类ListNode
,然后使用递归函数reverseList
来反转链表。在递归函数中,我们首先判断链表是否为空或只有一个节点,如果是,则直接返回该节点。否则,我们递归调用reverseList
函数来反转链表的子链表,并将子链表的尾节点的下一个节点指向当前节点,然后将当前节点的下一个节点设为null,最后返回反转后的链表头节点。
这种方法的时间复杂度为O(n),其中n是链表的长度。
领取专属 10元无门槛券
手把手带您无忧上云