算法14~19中、la、lb、Ic为各个单链表的头指针

算法14~19中、la、lb、Ic为各个单链表的头指针,直接用头指针表示和操作单链表。

14·假设链表la有两种可能的状态:它或者有尾部(蛇),或者它的最后一个结点的指针域指向链表前面的某个结点(蜗牛)。给出一个算法判断给定的链表la是蛇还是蜗牛。

答案
class LNode:
    def __init__(self, data):
        self.data = data
        self.next = None

def judge_snake_snail(la):
    """
    la:不带头结点单链表头结点
    返回:"snake"蛇(无环) / "snail"蜗牛(有环)
    """
    if la is None:
        return "snake"
    slow = la
    fast = la
    while fast is not None and fast.next is not None:
        slow = slow.next
        fast = fast.next.next
        if slow == fast:
            return "snail"   # 相遇,存在环,蜗牛
    return "snake"          # 快指针走到末尾,无环,蛇

题目信息

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