【发布时间】:2021-02-07 22:26:18
【问题描述】:
我为这种单链表实践创建了两个类。我想在将新添加的单词添加到列表时计算它们的频率。但似乎每次函数运行时它们的频率都只有 1? 练习还表明我应该在 Node 类中添加频率计数。
class Node:
def __init__(self, wordData, freq=1):
self.next = None
self.wordData = wordData
self.freq = freq
class FreqLinkedList:
def __init__(self):
self.head = None
def addWord(self, word):
#appending
new_node = Node(word)
if self.head is None:
self.head = new_node
return
current_node = self.head
while current_node.next:
current_node = current_node.next
current_node.next = new_node
while current_node.next is not None:
if current_node.wordData == word:
current_node.freq += 1
current_node = current_node.next
current_node.next = current_node.next
return current_node.freq
def printList(self):
current_node = self.head
while current_node is not None:
print(current_node.wordData, current_node.freq)
current_node = current_node.next
【问题讨论】:
-
似乎是糟糕的设计。
freq不应该是 Node.js 的一部分。 IT 应该是FreqLinkedList的一部分。因为如果您有数百万个单词条目,您最终会为了添加一个单词而迭代和更新所有条目。
标签: python python-3.x data-structures linked-list singly-linked-list