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

2024-10-03 00:18:31 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 算法数据结构节点手册链表指针steven二叉树
1条回答
网友
1楼 · 发布于 2024-10-03 00:18:31

我用Javascript看了很多这本书。有趣的一部分是把想法翻译成你熟悉的语言。你需要理解这本书是关于思想的,而不是一种特定的语言。然而,稍微熟悉一下c语言将真正帮助您理解示例。在

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

考虑一个简单的链接列表:

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

self.next本质上是指向下一个列表项的指针。现在,您可以使用以下内容创建链接列表:

^{pr2}$

然后遍历列表:

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程序员。在

相关问题 更多 >