Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
链表 回文_java链表数据结构,希望能够帮助你!!!。
作为一个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; } }
类似的链表题还有很多,我也是刚刚接触,这个博客就当复习了。如果有不对的地方还请大佬指正。
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。