【腾讯面试题】单链表反转

【腾讯面试题】单链表反转

  • 思路:
    1. 先定义一个节点 reverseHead= new Node();
    2. 从头到尾遍历原来的链表,没遍历一个节点,就取出,并放在新的链表reverseHead的最前端
    3. 原来的链表的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,共同指向同一片堆空间
}
}
posted @   gdxstart  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示