Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 61.2MB ·虚拟内存 1300.5MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
在有些情况下,存储数据的内存分配不能位于连续的内存块中。所以我们接受指针的帮助,其中数据和数据元素的下一个位置的地址也被存储。所以我们从当前数据元素的值中知道下一个数据元素的地址。通常这样的结构被称为指针。但在Python中,我们将它们称为节点。
节点是各种其他数据结构链接列表和发can可以在python中处理的基础。
这些节点是通过实现一个将保存指针和数据元素的类来创建的。在下面的例子中,我们创建了一个名为daynames的类来保存星期几的名称。nextval指针被初始化为空和三个节点,并用值初始化,如图所示。
节点e1的下一个指针指向e3,而节点e3的下一个指针指向e2。
class daynames: def __init__(self, dataval=None): self.dataval = dataval self.nextval = None e1 = daynames('Mon') e2 = daynames('Tue') e3 = daynames('Wed') e1.nextval = e3 e3.nextval = e2
我们可以通过创建一个变量并为其分配第一个元素来遍历上面创建的节点的元素。然后我们使用while循环和nextval指针来打印出所有的节点元素。请注意,我们还有一个额外的数据元素,并将nextval指针正确排列,以便按照正确的顺序将输出呈现为一周的几天。
class daynames: def __init__(self, dataval=None): self.dataval = dataval self.nextval = None e1 = daynames('Mon') e2 = daynames('Wed') e3 = daynames('Tue') e4 = daynames('Thu') e1.nextval = e3 e3.nextval = e2 e2.nextval = e4 thisvalue = e1 while thisvalue: print(thisvalue.dataval) thisvalue = thisvalue.nextval
当上面的代码执行时,它会产生以下结果。
Mon Tue Wed Thu
插入和删除等附加操作可以通过在链接列表和树等通用数据结构中使用此节点容器来实现适当的方法来完成。所以我们在接下来的章节中对它们进行研究。
链表是一系列数据元素,通过链接连接在一起。每个数据元素都以指针的形式包含到另一个数据元素的连接。Python在其标准库中没有链接列表。我们使用前一章讨论过的节点概念来实现链表的概念。我们已经看到了我们如何创建节点类以及如 ...