python判断回文链表
时间: 2023-09-24 18:07:20 浏览: 114
判断回文链表.md
要判断一个链表是否为回文链表,可以使用以下方法之一:
方法一:使用栈
首先,将链表中的数据全部压入一个栈中,然后再逐个弹出栈中的值与链表中的值进行比较,如果有不一样的则说明不是回文链表。
方法二:快慢指针
使用两个指针,一个快指针每次移动两个节点,一个慢指针每次移动一个节点。当快指针到达链表末尾时,慢指针指向链表中间位置。然后将慢指针后面的链表部分反转,再与原始链表前半部分进行比较,如果全部相等则说明是回文链表。
方法三:递归
使用递归的方法,递归到链表末尾,然后再与中间位置前面一段链表进行比较是否相等。如果链表为空,则直接返回True。
参考代码如下:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def is_palindrome(head):
if head is None or head.next is None:
return True
stack = []
p = head
while p:
stack.append(p.val)
p = p.next
p = head
while p:
if p.val != stack.pop():
return False
p = p.next
return True
```
请注意,这只是其中一种实现方法,你可以根据自己的需求选择适合的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文