Python 如何比较链接列表中的节点数据值?
我正在尝试使用mergesort对链表中的节点进行排序。在附加的代码块中,mergesort尝试比较两个节点“l1”和“l2”的数据值,但python给出了以下错误:Python 如何比较链接列表中的节点数据值?,python,linked-list,mergesort,Python,Linked List,Mergesort,我正在尝试使用mergesort对链表中的节点进行排序。在附加的代码块中,mergesort尝试比较两个节点“l1”和“l2”的数据值,但python给出了以下错误: if l1.data <= l2.data: TypeError: '<=' not supported between instances of 'NoneType' and 'int' 如果l1.data,我怀疑您希望您的if语句是如果l1.data为无:,而不是如果l1为无:。同样适用于l2。否则,您需要弄清楚
if l1.data <= l2.data:
TypeError: '<=' not supported between instances of 'NoneType' and 'int'
如果l1.data,我怀疑您希望您的if语句是如果l1.data为无:
,而不是如果l1为无:
。同样适用于l2
。否则,您需要弄清楚如何创建一个列表节点,其中data
值为None。您还没有向我们展示有关在此处创建列表的任何内容。@TimRoberts谢谢。我可能会在晚些时候遇到这个问题,这可能意味着你的链接列表构建得不好。提供用于生成调用合并排序的列表的代码。
def mergeLists(l1, l2):
if l1 is None:
return l2
if l2 is None:
return l1
if l1.data <= l2.data:
temp = l1
temp.next = mergeLists(l1.next, l2)
else:
temp = l2
temp.next = mergeLists(l1, l2.next)
return temp
def mergeLists(l1, l2):
if l1 is None:
return l2
if l2 is None:
return l1
if l1.data <= l2.data:
temp = l1
temp.next = mergeLists(l1.next, l2)
else:
temp = l2
temp.next = mergeLists(l1, l2.next)
return temp
def mergeSort(head):
if head is None or head.next is None:
return head
l1, l2 = divideLists(head)
l1 = mergeSort(l1)
l2 = mergeSort(l2)
head = mergeLists(l1, l2)
return head
def divideLists(head):
slow = head
fast = head
if fast:
fast = fast.next
while fast:
fast = fast.next
if fast:
fast = fast.next
slow = slow.next
mid = slow.next
slow.next = None
return head, mid