单链表练习3:单链表的反转
位置:class Test里,main方法外
//将单链表反转
public static void reverseList(HeroNode head) {
//如果当前链表为空,或者只有一个结点,无需反转,直接返回
if(head.next==null||head.next.next==null) {
return;
}
//定义一个辅助的指针(变量),帮助我们遍历原来的链表
HeroNode temp=head.next;
HeroNode next=null;//指向当前结点temp的下一个结点
HeroNode reverseHead=new HeroNode(0,"","");
//遍历原来的链表,每遍历一个结点,就将其取出,并放在新的链表reverseHead的最前端
while(temp!=null) {
next=temp.next;//先暂时保存当前节点的下一个结点,因为后面需要使用
//头插法
temp.next=reverseHead.next;
reverseHead.next=temp;
temp=next;//将temp后移
}
//将head.next指向reverseHead.next,实现单链表的反转
head.next=reverseHead.next;
}
main方法里:
//测试一下单链表的翻转功能
System.out.println("原来的链表情况~~");
singleLinkedList.list();
System.out.println("反转单链表~~");
reverseList(singleLinkedList.getHead());
singleLinkedList.list();