python - 如何在 Python 中实现基于指针的数据结构?

标签 python python-3.x algorithm

<分区>

我正在阅读 Steven S. Skiena 的算法设计手册,我遇到的一个问题是它主要使用指针。我正在使用没有指针的 Python;那么,我应该如何在 Python 中实现基于指针的数据结构?

例如,在第 3 章中,一些练习包括将二叉树转换为链表。二叉树和链表都涉及节点之间的指针。什么是 Python 的等价物?

最佳答案

我使用 Javascript 阅读了本书的大部分内容。部分乐趣在于将想法翻译成您熟悉的语言。你需要理解这本书是关于思想的,而不是特定的语言。但是,一点 熟悉 c 确实会帮助您理解这些示例。

因此,例如,您可能不太可能像在 c 中那样在 python 中使用链表,但您当然可以使用指向其他属性的类和对象属性从示例中实现它们。

考虑一个简单的链表:

class ListItem():
    def __init__(self, val, next = None):
        self.next = next
        self.value = val

self.next 本质上是指向下一个 ListItem 的指针。现在您可以创建一个链表,如下所示:

arr = [5, 7, 2, 1, 9, 0, 10, 23]

head = ListItem(10)
current = head
for n in arr:
    item = ListItem(n)
    current.next = item
    current = item

然后遍历列表:

pointer = head
while(pointer):
    print(pointer.value)
    pointer = pointer.next

你也可以做一个链表样式的插入,它看起来很像 C 代码:

#insert 'inserted_node' before first list item with value 1
inserted_node = ListItem('inserted')
pointer = head
while(pointer):
    if pointer.next.value == 1:
        inserted_node.next = pointer.next
        pointer.next = inserted_node
        break
    pointer = pointer.next

这是一本了不起的书,即使您不是用 C 或其他一些低级语言来做的,也值得一读。即使您花时间研究通常不会用 Python 接触的数据结构,进行翻译也会让您成为更好的 Python 程序员。

关于python - 如何在 Python 中实现基于指针的数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50164917/

相关文章:

python - 如何使用 Python Opencv 检测特定区域内的移动?

java - 基于定时器遍历树

python - 我应该如何指定应用程序 ID?

python - 如何让 Beautiful Soup 输出 HTML 实体?

python - 在python中将整数转换为七段显示

python - python中如何获取项目根目录下子文件夹的路径?

python - 转换为 GUI 时,int() 无法转换具有显式基数的非字符串

检查给定数字的算法是给定数组中组合的总和

arrays - 如何计算 O(Log(N))?

python - Airflow : Native operators vs containers