/**
* TODO 将单链表反转
* 1.先定义一个结点
* 2.从头到尾遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表的最前端
*
* @param head
*/
public static void reverse(HeroNode head) {
// 如果当前链表为空,或者只有一个结点,无需反转,直接返回
if (head.next == null || head.next.next == null) {
return;
}
// 原来的链表
HeroNode temp = head.next;
// 当前结点的下一个结点
HeroNode next = null;
// 反转链表的头结点
HeroNode reverseHead = new HeroNode(0, "", "", 0);
while (temp != null) {
// 保存当前结点的下一个结点,后面需要使用
next = temp.next;
// 将 temp 的下一个结点指向新的链表的最前端
temp.next = reverseHead.next;
// 将 temp 连接到新的链表上
reverseHead.next = temp;
// temp 后移
temp = next;
}
// 将 head.next 指向 reverseHead.next ,实现单链表的反转
head.next = reverseHead.next;
}
链表—将单链表反转
最新推荐文章于 2024-09-20 14:26:28 发布