要是想实现判断回文链表,我们需要先了解一个思想,也是力扣上的一道题目,876就是查找链表的中间节点,如果链表个数是奇数,就是中间的,如果是偶数,就是靠右的那一个为中间的,实现的方法为快慢指针 。
思路为找到中间节点,并将中间节点前的链表反转,最后逐个进行比较。
我们将查找中间节点和反转链表放在一个循环中,当然也可以抽出来放在不同的方法中去实现,只不过执行速度没有那么快,第一个循环中就是查找中间节点和从中间反转链表,因为奇数会把中间的那个链表也算上,导致无法实现,画一下图就能知道,如果是奇数链表,p2快指针只会指向最后一个节点,而不是null,所以做一个if判断,如果是奇数链表,就向后跳一个,这样我们在比较的时候,就不会带上中间的节点。最后就是逐一比较节点值的方法,就不做过多解释了。