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

题目信息

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