单链表的反转(有难度)


//单链表的反转public static void reversList(HeroNode2 head){//如果链表为空,或者链表只有一个节点,无需反转,直接返回if (head.next == null || head.next.next == null){return;}//定义一个辅助指针(变量),帮助我们遍历原来的链表HeroNode2 temp = head.next;HeroNode2 next = null;//指向当前节点[temp]的下一个节点HeroNode2 reversHead = new HeroNode2(0, "", "");//遍历原来的链表//每遍历一个节点,就将其取出,并放在新的链表reversHead的最前端while (temp != null){next = temp.next;//先暂时保存当前节点的下一个节点,后面需要使用temp.next = reversHead.next;//将temp的下一个节点指向新的链表的最前端reversHead.next = temp;//将temp连接到新的链表上temp = next;//让temp后移}//将head.next 指向reversHead.next ,实现单链表的反转head.next = reversHead.next;}
