2023-09-24  阅读(3)
原文作者:moxiaolin 原文地址: https://blog.csdn.net/qq_37909508/article/details/89474736

题目描述

输入一个链表,反转链表后,输出新链表的表头。

    /*
    public class ListNode {
        int val;
        ListNode next = null;
    
        ListNode(int val) {
            this.val = val;
        }
    }*/
    public class Solution {
        public ListNode ReverseList(ListNode head) {
            if(head==null) {
        		return head;
        	}
        	ListNode LinkedHead=null;
        	ListNode pre=null;
        	ListNode currentLinked=head;
        	ListNode temp=head;
        	while(currentLinked!=null) {
        		temp=currentLinked.next;
        		currentLinked.next=pre;
        		if(temp==null) {
        			LinkedHead=currentLinked;
        		}
        		pre=currentLinked;
        		currentLinked=temp;
        	}
    		return LinkedHead;
        }
    }

这道题主要是考察对链表的使用;

假设链表中存在以下值:

202309242323271141.png

我们现在要将链表反转过来,获取当前链表结点currentLinked其结点如下图所示:

202309242323275562.png

将下一个结点currentLinked.next赋值给临时结点temp,然后再将它的currentLinked.next赋值为pre(pre=null),现在该链表结构如图所示:

202309242323282283.png

现在将当前结点currentLinked赋值给pre,使得pre指向当前结点, 在将temp赋值给currentLinked,相当于让currentLinked前进一位,现在链表结构如下图所示:

202309242323289324.png

将下一个结点currentLinked.next赋值给临时结点temp,然后再将它的currentLinked.next赋值为pre,现在该链表结构如图所示:

202309242323297715.png

现在将当前结点currentLinked赋值给pre,使得pre指向当前结点, 在将temp赋值给currentLinked,相当于让currentLinked前进一位,现在链表结构如下图所示:

202309242323305606.png

后面以此类推.到最后的时候注意判断 temp是否为空,为空的话,说明我们反转链表完成,返回就可以了.

总结:该题主要是对链表基本性质的考察,断链和连接链.

在这里我补充一点,我为什么在解题中用到指向当前结点,是因为在java虚拟机中new出来的每个对象都是存放在堆内存中的,我们在使用的时候是通过栈区来指向堆中的对象地址来获取值,所以我这里就直接使用指向该结点的说法.


Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。

它的内容包括:

  • 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
  • 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
  • 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
  • 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
  • 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
  • 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
  • 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
  • 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw

目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:

想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询

同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。

阅读全文