要求将算法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

题目信息

题号:8231
题型:简答题
知识点:Python
难度:普通