class HeroNode {
public int no;
public String name;
public String nickname;
public HeroNode next;
public HeroNode(int no, String name, String nickname) {
this.no = no;
this.name = name;
this.nickname = nickname;
}
public String toString() {
return "HeroNode [no=" + this.no + ", name=" + this.name + ", nickname=" + this.nickname + "]";
}
}
//将单链表反转
public static void reversetList(HeroNode head) {
//如果当前链表为空,或者只有一个节点,无需反转,直接返回
if (head.next == null || head.next.next == null) {
return;
}
//定义一个辅助的指针(变量),帮助我们遍历原来的链表
HeroNode curr = head.next;
HeroNode next = null; // 指向当前节点[cur] 的下一个节点
HeroNode reverset = new HeroNode(0,"","");
//遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead 的最前端
while(curr != null) {
next = curr.next; // 先暂时保存当前节点的下一个节点,因为后面需要使用
curr.next = reverset.next; // 将curr的下一个节点指向新的链表的最前端
reverset.next = curr; // 将curr 连接到新的链表上
curr = next; // 让cur后移
}
// 将head.next 指向 reverseHead.next, 实现单链表的反转
head.next = reverset.next;
}
我对这一步curr.next = reverset.next; // 将curr的下一个节点指向新的链表的最前端
了解不够清晰,在这一步输出 curr.next
的值