3)单链表的反转
思路:
- 先定义一个节点reverseHead
- 从头到尾遍历原来的链表,每遍历一个节点,就将其取出,放在链表的最前端
- 原来的链表的head.next=reverseHead.next
代码实现
public void reversetList(HeroNode head){
//如果当前链表为空或者只有一个节点,无需反转,直接返回
if(head.next==null||head.next.next==null){
return;
}
HeroNode cur=head.next;//辅助变量,帮助我们遍历原来的链表
HeroNode next=null;//指向当前节点cur的下一个节点
HeroNode reverseHead=new HeroNode(0,"",""); //新的链表
while (cur!=null){
next=cur.next;
cur.next=reverseHead.next;
reverseHead.next=cur;
cur=next;
}
head.next= reverseHead.next;
}