0
你能幫我,我想根據添加功能的文檔排序鏈接列表,但我得到一個錯誤,說: f.add( 'b',2) 文件「」,第69行,加上 AttributeError:'NoneType'對象沒有'next'屬性 我該如何避免這種情況? Thankyou。我想排序一個鏈接列表降序
class Frequency(object):
"""
Stores a letter:frequency pair.
>>> f = Frequency('c', 2)
>>> f.letter
'c'
>>> f.frequency
2
>>> f
{c: 2}
"""
def __init__(self, letter, frequency):
self.letter = letter
self.frequency = frequency
self.next = None
def __repr__(self):
return '{%s: %d}' % (self.letter, self.frequency)
class SortedFrequencyList(object):
"""
Stores a collection of Frequency objects as a sorted linked list.
Items are sorted from the highest frequency to the lowest.
"""
def __init__(self):
self.head = None
def add(self, letter, frequency):
"""
Adds the given `letter`:`frequency` combination as a Frequency object
to the list. If the given `letter` is already in the list, the given
`frequency` is added to its frequency.
>>> f = SortedFrequencyList()
>>> f.add('a', 3)
>>> f
({a: 3})
>>> f.add('b', 2)
>>> f
({a: 3}, {b: 2})
>>> f.add('c', 4)
>>> f
({c: 4}, {a: 3}, {b: 2})
>>> f.add('b', 3)
>>> f
({b: 5}, {c: 4}, {a: 3})
"""
current = self.head
found = False
if self.head is None:
self.head = Frequency(letter, frequency)
else:
prev = None
while current is not None:
if current.letter == letter:
current.frequency = current.frequency + frequency
found = True
prev = current
current = current.next
next1 = current.next
if next1 is None:
current = next1
if current.frequency < next1.frequency:
temp = current
current = next1
next1 = temp
else:
current = next1
next1 = current.next.next
if found is False:
prev.next = Frequency(letter, frequency)
我認爲,多數民衆贊成在錯誤的現象發生,但林不知道如何糾正這一點。 。我是否應該有這樣的陳述:如果next1是None:使當前的一個是最後一個。我如何實現這個? – Nirali
@Nirali:首先制定你想要在僞代碼中做什麼。帶正方形和箭頭的圖表幫助我制定出這種指針操作。 (例如,如果我們擊中了列表的末尾,那麼'current.next == None',使'current.next ==頻率(字母,頻率)'。) – katrielalex