要求将算法7-13设计为3. 4. 1节定义的带头结点
要求将算法7-13设计为3. 4. 1节定义的带头结点单链表LinkedList类的方法。
9.设计算法,删除单链表中的所有冗余元素,并返回删除的元素个数。例如,原线性表为:(7. 2, 1, 7, 2, 3, 6. 3. 5),去除冗余之后的表为:(7, 2. 1, 3, 6, 5)
答案
class LNode: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = LNode(None) # 头结点 def delete_duplicate(self): """删除链表冗余重复元素,返回删除的结点个数""" count = 0 p = self.head.next while p is not None: pre = p q = p.next while q is not None: if q.data == p.data: # 删除q结点 pre.next = q.next q = pre.next count+= 1 else: pre = q q = q.next p = p.next return count