Python 插入到有序链表中,并对重复项求和

Python 插入到有序链表中,并对重复项求和,python,python-3.x,linked-list,Python,Python 3.x,Linked List,我正在尝试将项目对(字母、频率)插入到有序链表中。到目前为止,我能够创建已排序的链表,但我不知道如果一封信出现两次,如何更新频率和重新排列链表 到目前为止,我已经: def add(self, letter, frequency): temp = Frequency(letter, frequency) curr = self.head prev = None stop = False while curr != None and not stop:

我正在尝试将项目对(字母、频率)插入到有序链表中。到目前为止,我能够创建已排序的链表,但我不知道如果一封信出现两次,如何更新频率和重新排列链表

到目前为止,我已经:

def add(self, letter, frequency):

    temp = Frequency(letter, frequency)

    curr = self.head
    prev = None
    stop = False

    while curr != None and not stop:
        if curr.frequency < temp.frequency:
            stop = True
        else:
            prev = curr
            curr = curr.next

    if prev == None:
        temp.set_next(self.head)
        self.head = temp
    else:
        temp.set_next(curr)
        prev.set_next(temp)

f = SortedFrequencyList()
f.add('a', 3)
f.add('b', 5)
f.add('g' 1)
但如果我要这么做

f = SortedFrequencyList()
f.add('a', 3)
f.add('b', 5)
f.add('g', 1)
f.add('a', 3)
我明白了

而不是

({a: 6}, {b: 5}, {g: 1})

我们无法在编码帮助方面做太多工作,因为您还没有发布支持代码:我们没有足够的代码来重现问题。你也没有给我们任何编码的尝试

你需要建立更多的链表支持。到目前为止,您所拥有的只是一个将新条目插入列表的方法。我建议您编写一个find方法,通过名称(字母)查找现有元素,并编写一个update来查找它,增加频率,并将其重新排序到列表中

执行更新的基本方法是编写删除例程。找到项目,保存副本,从列表中删除它,然后添加一个更新频率的新项目

更好的更新方法是在一个例程中进行删除和重新插入,备份列表。这意味着要么是递归内存,要么是双链表。一种更快的方法是实现某种索引树结构,这样搜索速度更快


这是否让您朝着正确的方向前进?

由于您尚未发布支持代码,我们无法在编码帮助方面做太多工作:我们没有足够的资源来重现问题。你也没有给我们任何编码的尝试

你需要建立更多的链表支持。到目前为止,您所拥有的只是一个将新条目插入列表的方法。我建议您编写一个find方法,通过名称(字母)查找现有元素,并编写一个update来查找它,增加频率,并将其重新排序到列表中

执行更新的基本方法是编写删除例程。找到项目,保存副本,从列表中删除它,然后添加一个更新频率的新项目

更好的更新方法是在一个例程中进行删除和重新插入,备份列表。这意味着要么是递归内存,要么是双链表。一种更快的方法是实现某种索引树结构,这样搜索速度更快


这是否使您朝着正确的方向前进?

关于总和和重新排列,您尝试了什么?您有与此相同的项目?是的。这就是确切的一个根据总和和重新排列,你尝试了什么?你有和这个相同的项目吗?是的。就是这个是的。那太棒了。谢谢:)你介意快速跳进聊天室进一步讨论吗?我有基本的实现,我只需要一只手巩固它的安全。。。让我知道怎么去那里。我会跳进去一个已经做过但没有用过的。对那太棒了。谢谢:)你介意快速跳进聊天室进一步讨论吗?我有基本的实现,我只需要一只手巩固它的安全。。。让我知道怎么去那里。我会跳进去一个已经做过但没有用过的。
({b: 5}, {a: 3}, {a: 3}, {g: 1})
({a: 6}, {b: 5}, {g: 1})