要求将算法7~13设计为3. 4. 1节定义的带头结点
要求将算法7~13设计为3. 4. 1节定义的带头结点单链表LinkedList类的方法。
7.设计算法,定位单链表中间位置的结点。如线性表为(1, 2, 3. 4. 5),则中间位置元素为3;如线性表为(1, 2, 3, 4),则中间位置元素为2
答案
# 单链表结点类 class LNode: def __init__(self, data): self.data = data self.next = None # 带头结点单链表 LinkedList class LinkedList: def __init__(self): self.head = LNode(None) # 头结点 def find_mid_node(self): """寻找单链表中间位置结点,快慢指针法""" slow = self.head.next # 慢指针 fast = self.head.next # 快指针 while fast is not None and fast.next is not None and fast.next.next is not None: slow = slow.next fast = fast.next.next return slow