是的,这与家庭作业有关,不,我不是在寻找你为我编码,只是朝着正确的方向发展。
我正在尝试实现一个linked list
来表示用户猜到一个字母后列表中当前可能的单词列表。
目前,我正在执行以下操作来阅读玩家想要猜测的单词的长度,然后将所有可能的单词附加到链接列表中。
但是,我没有看到如何不断更新链表以计算最大的单词族并打印当前单词进度
(例如,用户在其中猜到的所有当前字母的虚线)。
主要有问题,因为我无法完全理解链接列表的工作方式以及如何在我的程序中实现它们。
我如何制作所有可能单词的初始链表。
def make_ll(self):
linked_list = ll.LinkedList()
print(linked_list)
for word in self.init_list:
if len(word) == int(self.word_length):
linked_list.append(str(word))
self.linked_list = linked_list
def init_family(self, guess):
self.dictionary = {}
cursor = self.linked_list.head
while cursor != None:
word = cursor.data
cursor = cursor.next
word = self.make_families(word, guess)
def make_families(self, word, guess):
count = 0
new_word = ""
for c in word:
if guess == c:
count += 1
else:
new_word = word.replace(c, "-")
if count == 0:
self.linked_list.delete(word)
key = new_word
if key not in self.dictionary:
self.dictionary[key] = []
self.dictionary[key].append(word)
max = max(self.dictionary.values(), key = len)
new_linked_list = ll.linked_list
for word in max:
new_linked_list.append(word)
self.linked_list = new_linked_list
return word
答案 0 :(得分:1)
骷髅,
这可以使用链接列表完成,但它不是最佳解决方案。
您可以将链接列表视为一堆火车车厢。每辆车都做两件事:
1)它有一些东西(在编程中,这是data
- 在你的情况下它是一个单词)。
2)它连接到其他汽车(在编程中这通常被称为pointer
)。
这两件事都是火车的一部分。在链接列表中,这称为node
。
Node1 Node2 Node3
----- ----- -----
|Data1| -> |Data2| -> |Data3|
----- ----- -----
您可以在火车上执行一些操作:
1)如果适当调整连接器,您可以在任何地方添加新车。
2)根据交通规则,您可以浏览汽车,并查看内部数据。
3)坐在车里,让你轻松找到下一辆车:你只需要退出并登上下一辆车。
链接列表具有相同的规则:
1)它们允许您在任何地方添加节点,但您必须调整对节点的引用(指针)。
2)当您查看节点时,您可以轻松访问数据。
3)您可以通过查看该节点的引用轻松访问下一个节点。如果您有双向链表,则可以查看上一节点和下一节点。
理解链接列表的大多数混淆是定义的linked
部分。就像我提到的,这通常是一个指针。要理解它是如何工作的,你必须理解指针,但是,你仍然可以通过自己走过来了解链接列表。
首先,让我们定义我们的火车车厢(或我们的节点):
class TrainCar:
def __init__(self, data):
# this is the contents of our train car
self.data = data
# This is the reference to the next node, or the train car's connector.
# Accessing it gets you the next TrainCar, if one exists
self.next_car = None
一旦你得到它,它已经开始落实到位。基本上你有一堆节点,每个节点引用下一个节点!剩下要做的就是实施我们的业务:
# making a new linked list
class Train:
def __init__(self):
self.head_car = None
def add_car(self, data):
# make new car/node
new_car = TrainCar()
# add our data to the new car as desired
new_car.data = data
# This is where the magic happens! We're updating the reference inside
# the node we just made to point to the last car we were on.
# We are just adding a new car to the end of the train.
new_car.next_car = self.head_car
# Now we're setting the head car to be the one we just made!
self.head_car = new_car
现在,其他操作(例如遍历链表和删除节点)留给您。