检查链表是否在 Python 中排序(迭代和递归)
假设我们有一个链表,我们必须定义两个函数来检查链表是否按非递增顺序排序。其中一种方法以迭代方式工作,另一种以递归方式工作。
因此,如果输入类似于L=[15,13,8,6,4,2],那么输出将为True。
示例
让我们看看以下实现以获得更好的理解-
class ListNode:
def __init__(self, data, next = None):
self.val= data
self.next= next
def make_list(elements):
head = ListNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.next:
ptr = ptr.next
ptr.next= ListNode(element)
return head
def solve_iter(head):
if head == None:
return True
whilehead.next!= None:
current = head
ifcurrent.val<= current.next.val:
return False
head = head.next
return True
def solve_rec(head):
if head == None orhead.next== None:
return True
returnhead.val> head.next.val and solve_rec(head.next)
L = make_list([15, 13, 8, 6, 4, 2])
print(solve_iter(L))
print(solve_rec(L))输入
[15, 13, 8, 6, 4, 2]输出结果
True True