问题遇到的现象和发生背景
反转链表reverseList函数传入head节点和传入a1节点,返回值不同;传入head可以正常返回反转链表,传入a1则不能
问题相关代码,请勿粘贴截图
class ListNode {
int val;
ListNode next;
ListNode() {}
ListNode(int val) { this.val = val; }
ListNode(int val, ListNode next) { this.val = val; this.next = next; }
@Override
public String toString() {
return "ListNode{" + "val=" + val +"}";
}
}
public class Solution {
private static ListNode head= new ListNode(0);
public static void main(String[] args) {
ListNode a4=new ListNode(4,null);
ListNode a3=new ListNode(3,a4);
ListNode a2=new ListNode(2,a3);
ListNode a1=new ListNode(1,a2);
head.next=a1;
while(a1!=null){
System.out.println(a1.toString());
a1=a1.next;
}
// ListNode a1=new ListNode(1);
// ListNode a2=new ListNode(2);
// ListNode a3=new ListNode(3);
// ListNode a4=new ListNode(4);
// a1.next=a2;
// a2.next=a3;
// a3.next=a4;
// a4.next=null;
// while (a1 != null) {
// System.out.println(a1.toString());
// a1 = a1.next;
// }
System.out.println("逆转");
reverseList(a1);
while (a4.next!=null) {
System.out.println(a4.toString());
a4 = a4.next;
}
}
public static ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode p = reverseList(head.next);
head.next.next = head;
//System.out.println(p);
head.next = null;
//System.out.println(p);
return p;
}
}
运行结果及报错内容
传入head可以正常显示反转链表
传入a1就不能正常输出反转链表了
我的解答思路和尝试过的方法
我想要达到的结果
我觉得有没有头的链表应该都能被反转才对,为什么没头时传入第一个节点就不能显示反转链表?