检查链表是否在 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