算法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" # 快指针走到末尾,无环,蛇