JAVA链表中的回文链表结构

JAVA链表中的回文链表结构作为一个java初学者,最近遇到了回文链表结构这个难题,经过一番学习总算搞清楚个大概。先来说一下什么是回文链表,会问链表在我们生活中经常能够遇到。会问链表的结构就是例如:1->2->3->2->1。我们将它反转过来还是与原链表相同,这种就称为回文结构。具体方法:1.先找到链表的中间位置2.然后将中间位置的链表反转3.从两边向中间遍历代码如图classNode{publi…

大家好,又见面了,我是你们的朋友全栈君。

作为一个java初学者,最近遇到了回文链表结构这个难题,经过一番学习总算搞清楚个大概。

先来说一下什么是回文链表,会问链表在我们生活中经常能够遇到。会问链表的结构就是

例如:1->2->3->2->1。我们将它反转过来还是与原链表相同,这种就称为回文结构。

具体方法:1.先找到链表的中间位置

                  2.然后将中间位置的链表反转

                  3.从两边向中间遍历

代码如图

class Node {
    public int data;
    public Node next;
    //构造方法
    public Node(int data) {
        this.data = data;
        this.next = null;
    }
}
public class MyLinkedList {
    public Node head;//保存单链表的头节点的引用
 public boolean chkPalindrome() {
        //判断头节点是否为空
        if(this.head == null) {
            return false;
        }
        //判断头节点的next是否为空,如果为空,证明只有一个链表,就是回文链表
        if(this.head.next == null) {
            return true;
        }
        //找出链表的中间位置
        Node fast = this.head;
        Node slow = this.head;

        while(fast != null && fast.next != null) {
            fast = fast.next.next;
            slow = slow.next;
        }
        //把中间位置之后的链表反转
        Node cur = slow.next;
        while(cur != null) {
            Node curNext = cur.next;
            cur.next = slow;
            slow = cur;
            cur = curNext;
        }
        //从两边向中间遍历
        while(slow != this.head) {
            if(slow.data != this.head.data) {
                return false;
            }
            if(this.head.next == slow) {
                return true;
            }
            slow = slow.next;
            this.head = this.head.next;
        }
        return true;
    }
}

类似的链表题还有很多,我也是刚刚接触,这个博客就当复习了。如果有不对的地方还请大佬指正。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139544.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • B站 – 黑客攻防 入门到入狱 [网络安全] -笔记

    B站 – 黑客攻防 入门到入狱 [网络安全] -笔记cc攻击:针对应用,比如恶意刷验证码DDoS攻击:针对服务器,比如大量的http请求,超大流量的恶意访问←←←刮刮乐文章目录文件上传漏洞原理实验原理实验过程webshell:菜刀详解文件上传漏洞原理实验原理实验过程实验一:低安全模式下,上传任意类型文件,文件不大限制实验二:中安全模式下,绕过类型上传文件(文件MIME类型)修改浏览器代理为BurpSuite的代理通过BurpSuite修改Content-Type的信息,改为image/JPEG实验二实现原理:实验三:

    2022年6月9日
    36
  • laravel之跨域请求(一)「建议收藏」

    laravel之跨域请求(一)「建议收藏」laravel之跨域请求(一)

    2022年4月24日
    48
  • malloc 函数详解

    malloc 函数详解很多学过C的人对malloc都不是很了解,知道使用malloc要加头文件,知道malloc是分配一块连续的内存,知道和free函数是一起用的。但是但是:一部分人还是将:malloc当作系统所提供的或者是C的关键字,事实上:malloc只是C标准库中提供的一个普通函数而且很多很多人都对malloc的具体实现机制不是很了解。1,关于malloc以及相关的几个函数     #include<s…

    2022年4月26日
    68
  • NeatUpload的安装使用

    NeatUpload的安装使用版本:NeatUpload-1.2.32,用于文件上传。可传大文件。1.在VS工具箱中点右键选“选择项”……将Brettle.Web.NeatUpload.dll添加到工具箱。可以在添加后的工具箱看到

    2022年7月2日
    30
  • 位图(bmp)文件格式分析

    from:https://blog.csdn.net/qingchuwudi/article/details/25785307位图(bmp)文件格式分析作者:深蓝(由博主分享)一、什么是位图计算机能以位图和矢量图格式显示图像。1、位图(Bitmap):图像又称点阵图或光栅图,它使用我们称为像素(象素,Pixel)的一格一格的小点来描述图像。计算机屏幕其实就是一张包含大量像素…

    2022年4月3日
    214
  • js删除某个数组_js数组删除对象

    js删除某个数组_js数组删除对象Array.prototype.remove=function(val){ varindex=this.indexOf(val); if(index>-1){ this.splice(index,1); } };vardata=[1,2,3,4,5,6]data.remove(index);//你要删除的数

    2022年9月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号