数据结构论坛

首页 » 分类 » 分类 » Java数据结构和算法十二腾讯面试题
TUhjnbcbe - 2021/4/15 21:36:00
云南最好的白癜风医院         https://m-mip.39.net/baidianfeng/mipso_4769452.html

本篇文章列举出了腾讯面试题中的一个单链表的考题,题目是实现单链表的反转。

实现单链表的反转的主要思路如下:

1.首先需要定义一个新的链表reverseHead=newHeroNode();

2.从头到尾遍历原来的链表,每遍历一个结点,就将其从原来的链表当中取出,并放在新的链表reverseHead的最前端

3.将原来的链表的head.next=reverseHead.next,实现对接。

思路可以简单理解为,从链表的头部开始,每找到一个结点,就将其放入新的链表中,再找到第二个结点之后,继续将其放到链表的最前端,也就是第一个结点的前面,以此类推,将单链表进行反转。

代码及注释如下:

//将单链表反转publicstaticvoidreversetList(HeroNodehead){//如果当前链表为空,或者只有一个结点,无需反转,直接返回if(head.next==null

head.next.next==null){return;}//定义一个辅助变量,帮助遍历原来链表HeroNodecur=head.next;HeroNodenext=null;//指向当前结点的下一个结点HeroNodereverseHead=newHeroNode(0,"","");//遍历原来的链表,每遍历一个结点,就将其取出,并放在新的链表的最前端while(cur!=null){next=cur.next;//暂时保存,后面需要使用cur.next=reverseHead.next;//将cur的下一个结点指向新的链表的头结点reverseHead.next=cur;//将cur连接到新的链表上cur=next;//让cur后移}//将head.next指向reberseHead.nexthead.next=reverseHead.next;}

之后我们通过一个例子来验证方法的正确性,运行结果如下:

运行结果正确,注意,最关键的步骤是新旧两个链表的连接,也就是代码中的13到16行。

预览时标签不可点收录于话题#个上一篇下一篇
1
查看完整版本: Java数据结构和算法十二腾讯面试题