簡體   English   中英

插入有序鏈接列表Python和總和重復項

[英]Insert into Ordered Linked List Python and Sum Duplicates

我正在嘗試將項目對(字母,頻率)插入到有序鏈接列表中。 到目前為止,我已經能夠創建排序的鏈表,但是我無法弄清楚如果一個字母出現兩次時如何更新頻率並重新排列該表。

到目前為止,我有:

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)

退貨

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

但是如果我要做

f = SortedFrequencyList()
f.add('a', 3)
f.add('b', 5)
f.add('g', 1)
f.add('a', 3)

我懂了

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

代替

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

由於您尚未發布支持代碼,因此我們無法在編碼幫助方面做很多事情:我們沒有足夠的機會重現該問題。 您也沒有給我們任何編碼嘗試。

您需要建立更多的鏈表支持。 到目前為止,您所擁有的只是一個將新條目插入列表的方法。 我建議您編寫一個find方法,按名稱(字母)查找一個現有元素,並進行更新以查找該元素,增加頻率並將其排序回列表中。

進行更新的基本方法是編寫刪除例程。 找到該項目,持有一份副本,從列表中將刪除 ,然后添加具有更新頻率的新項目。

更好的更新方法是在一個例程中進行刪除和重新插入,以備份列表。 這表明遞歸內存或雙向鏈表。 甚至更快的方法是實現某種索引樹結構,以便搜索更快。

這會使您朝正確的方向前進嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM