使用Python和哈希表从链接列表的末尾查找第n个节点

时间:2016-10-26 20:05:31

标签: python algorithm hash linked-list

我刚开始学习数据结构和算法。我正在使用"数据结构和算法思维与Python" Narasimha Karumanchi(CareerMonk)的书。

关于链表的主题,其中一个练习题是从链表的末尾找到第n个节点。作者提到使用哈希表比强制使用哈希表更好。

Screenshot from the book

作者已离开实施。我想知道如何在Python中将其编码为类方法或函数。我的意思是,在C / C ++中获取内存地址相对容易,但我不知道如何构建哈希表(字典),正如作者在书中所建议的那样。

有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

在Python中,您只需构造一个字典,其中键是链表中的索引,值是列表本身的节点。您不需要知道节点的实际内存地址,因为将它们添加到字典中不会创建它们的副本,而是创建对原始对象的另一个引用。

所以你的代码会从某种集合开始,如:

linked_index_to_node = {}

然后对于链表中的每个项目,它将添加如下:

# Making some assumptions about what your list looks like here
next_node = linked_list
next_index = 1
while next_node is not None:
    linked_index_to_node[next_index] = next_node
    next_index += 1
    next_node = next_node.next