【腾讯面试题】单链表反转
- 思路:
- 先定义一个节点
reverseHead= new Node();
- 从头到尾遍历原来的链表,没遍历一个节点,就取出,并放在新的链表
reverseHead
的最前端 - 原来的链表的
head.next=reverseHead.next
- 先定义一个节点
- 核心代码
/**
* @ author Guo daXia
* @ create 2022/11/14
*/
public class Reverse {
/**
* 实现单链表反转
* @param head 传入一个头节点,进行反转
*/
public static void reverseList(LinkedNode head){
//先排除一些不可能
if (head.next==null){
return;
}
//定义一个辅助变量充当指针,遍历原来的链表
LinkedNode c =head.next;
LinkedNode next = null;
LinkedNode reverseHead = new LinkedNode(0,"");
//遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead的最前端,即头插法*****
while (c!=null){
next = c.next;//先暂时存当前节点的下一个节点,因为后面需要使用
c.next=reverseHead.next;//当前节点c的下一个指向新1链表的下一个
reverseHead.next=c;//将c连接到新的链表上
c=next;//让c后移
}
head.next = reverseHead.next;//最后,将head.next指向reverseHead.next,共同指向同一片堆空间
}
}
标签:面试题,单链,reverseHead,head,next,链表,腾讯,LinkedNode,节点
From: https://www.cnblogs.com/container-simple/p/16892092.html