笨办法学 Python · 续 练习 13:单链表

  • 时间:
  • 浏览:0

现在花时间了解怎样使用SingleLinkedListNode类手动构建列表,为什让手动遍历它。这是三个 多 很好的45分钟 hack spike,尝试练习它。

警告

在一些练习中,我只会告诉你哪此操作,并留给你来弄清楚,为什让对于这些 练习,我会指导你实现。查看SingleLinkedList中的函数列表,来查看每个操作以及怎样使用的注释。

在面向对象语言(如 Python)中出理 一些数据价值形式时,你时要理解三个 多 常见概念:

要进行基本的审计,你将执行此操作:

为了实现SingleLinkedListNode,亲戚亲戚朋友 时要三个 多 简单的类,如下:

这些 流程一开始 似乎很乏味,是的,但遇见给你那末快,在视频中给你看多,在运行每个测试事先我都那末做(或大慨我真的努力尝试那末做)。我按照以下流程:

在 Python 中,亲戚亲戚朋友 将映射哪此概念,如下所示:

亲戚亲戚朋友 现在到达了这些 偏离 ,你事先准备好尝试它了。首先,浏览测试并研究它的作用,并研究sllist.py中的代码,来弄清楚你时要做哪此。我建议当你尝试在SingleLinkeList中实现三个 多 函数时,首先写一些注释来描述它做了哪此,为什让填充 Python 代码来使哪此注释工作。给你看多我在视频中为什让做。

当 Python 有个相当好用为什让快速的list时,为哪此亲戚亲戚朋友 要那末做呢?完总要 为了学习数据价值形式。在真实世界中,给你使用 Python 的list并继续。

一旦亲戚亲戚朋友 在SingleLinkedListNode类中定义了亲戚亲戚朋友 的节点,亲戚亲戚朋友 能要能确切地知道控制器应该做哪此。每个数据价值形式总要 所需的常用操作列表,使其有用。不同的操作花费不同的内存(空间)和时间,一些是昂贵的,另一些是快速的。SingleLinkedListNode的价值形式使得一些操作非常快,为什让一些一些操作非常慢。在实现过程中,你事先了解到它。

译者:飞龙

你将实现的第三个 多 数据价值形式是单链表。我将描述数据价值形式,列出你应该实现的所有操作,并给你实现时要通过的单个测试。你应该首先尝试使用此数据价值形式,为什让再观看我的实现和审计视频,以便你了解该过程。

原文:Exercise 13: Single Linked Lists

我现在要向你提供测试,实现这些 类时,你时要使其要能工作。给你看多我事先遍历了每三个 多 操作,并试图覆盖大偏离 的边界情况,为什让当我进行审计时,给你发现实际上我事先错过了一些。亲戚亲戚朋友 常常不想对一些案例进行测试,例如“零个元素”和“三个 多 元素”。

亲戚亲戚朋友 时要使用单词nxt,事先next是 Python 中的保留字。除此之外,这是三个 多 非常简单的课程。最繁杂的是__repr__函数。当你使用%r格式或在节点上调用repr()时,这会打印调试输出。它应该返回三个 多 字符串。

一旦你看多我是为什会 做的,你事先做了笔记(对吗?),为什让去尝试更严格的东西,并尽事先仔细地执行代码审核过程。

当你花了三个 多 45 分钟的会话来 Hack 它并试图让它工作时,现在是观看视频的事先了。你首先时要尝试它,以便更好地了解我正在尝试的事情,为什让能要能使视频更容易理解。视频中我为什让编程而不说话,但我会做三个 多 旁白来讨论处在了哪此。视频也更快来节省时间,我会剪切掉任何无聊的错误或时间的浪费。

哪此都总要 数据价值形式的高效实现。它们故意做成朴素和缓慢的,以便亲戚亲戚朋友 能要能在练习 18 和 19 中讲解度量和优化。事先你在行业工作中尝试使用哪此数据价值形式,就会有性能难题报告 。

在一些关于算法的书中,你将看多为什让的实现,将节点和控制器组合成三个 多 类,但这是非常混乱的,也违反了设计中的难题报告 分离。最好将节点与控制类分开,以便只做一件事为什让把它做好,以及你知道错误在哪里。

这里,事先你没熟悉自动化测试,你事先想要观看视频,来看我为什会 做。

想象一下,亲戚亲戚朋友 想要存储一系列汽车。亲戚亲戚朋友 有第1公里车,里边是第二辆,直到最后1公里。想象这些 列表,亲戚亲戚朋友 能要能开始 设想三个 多 节点/指针/控制器设计:

为这次练习准备的深入学习是,删剪根据我在第三偏离 的介绍中描述的法子,尝试再次实现该算法。你还应该尝试思考,这些 数据价值形式中的哪此操作最有事先飞快。完成后,对你创建的内容执行审计。

协议:CC BY-NC-SA 4.0

自豪地采用谷歌翻译

当你执行每个测试时,你将审计代码来找到匮乏。最终,你将跟踪你在审计中找到的匮乏数量,但现在你时要在写完代码事先执行审计。“审计”例如于政府认为你偷税漏税的事先,税务局所做的工作。亲戚亲戚朋友 遍历每笔交易,每笔收入金额,所有支出金额,以及你为哪此为什让来花费。代码审核与之例如,事先你遍历每个函数,并分析所有输入参数,以及所有输出值。

仔细研究此测试,以便你在尝试实现事先,先了解每个操作应怎样工作。我不想一次将所有哪此代码写入文件。相反,最好每次只做三个 多 测试,并使其小偏离 要能工作。

查看操作的最简单法子是,查看SingleLinkedList类的框架版本:

编写代码后,请确保执行第三偏离 中描述的审计流程。事先你不太选取怎样完成,我也将在视频中为这些 练习执行审计。