老师您好,在读算法实现代码时有些地方实在看不懂,麻烦解答下,谢谢。
/** * 递归,在反转当前节点之前先反转后续节点 */ public static LinkedNode Reverse1(LinkedNode head) { // head看作是前一结点,head.getNext()是当前结点,reHead是反转后新链表的头结点 if (head == null || head.getNext() == null) { return head;// 若为空链或者当前结点在尾结点,则直接还回 } LinkedNode reHead = Reverse1(head.getNext());// 先反转后续节点head.getNext()。//先反转当前结点的后续结点。这里为什么赋值给reHead呢?????是不是通过递归从最后一个结点到第一个结点,依次把这些结点赋值给reHead????reHead表示新链表的头结点 head.getNext().setNext(head);// 将当前结点的指针域指向前一结点。这里为什么要指向前一结点呢?????不是应该指向后续结点吗????? head.setNext(null);// 前一结点的指针域令为null?????是不是指新链表中尾结点next=null; return reHead;// 反转后新链表的头结点 }