老师您好,在读算法实现代码时有些地方实在看不懂,麻烦解答下,谢谢。
1 2 3 4 5 6 7 8 9 10 11 12 13 | /** * 递归,在反转当前节点之前先反转后续节点 */ 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; // 反转后新链表的头结点 } |