单链表为1234一共进行了4次调用
//第四次调用
public Node reverse(Node head) {
if (head == null || head.next == null)
return head;//heasd =4返回4
Node temp = head.next;//temp =4;
Node newHead = reverse(head.next);
temp.next = head;//
head.next = null;//
return newHead;//
}
//第三次调用
public Node reverse(Node head) {
if (head == null || head.next == null)
return head;//heasd =3
Node temp = head.next;//temp =4;
Node newHead = reverse(head.next);///newHead =?等代第四次调用返回
temp.next = head;//4.next =3
head.next = null;//3.next =1
return newHead;///newHead =?
}
//第二次调用
public Node reverse(Node head) {
if (head == null || head.next == null)
return head;//heasd =2
Node temp = head.next;//temp =3;
Node newHead = reverse(head.next);//newHead =?//等待三返回
temp.next = head;//3.next =2
head.next = null;//2.next =null
return newHead;///newHead =?
}
//第一次调用
public Node reverse(Node head) {
if (head == null || head.next == null)
return head;//heasd =1
Node temp = head.next;//temp =2;
Node newHead = reverse(head.next);//newHead =?等待第二次调用返回
temp.next = head;//2.next =1
head.next = null;//1.next =null
return newHead;// newHead =?
}
本文详细解析了通过递归方式实现单链表反转的过程。从第一次到第四次调用逐步展示了如何将原始链表1→2→3→4转换为4→3→2→1。通过对每次递归调用中节点指向变化的描述,帮助读者理解递归反转单链表的原理。
3840

被折叠的 条评论
为什么被折叠?



