python-3.x - 如何用前一个指针创建一个链表?
问题描述
这个问题的灵感来自一个 leetcode 问题Flatten a Multilevel Doubly Linked List 。
节点定义如下:
class ListNode:
def __init__(self, val, prev, next):
self.val = val
self.prev = prev
self.next = next
我的问题是如何创建一个包含上一个和下一个指针的自定义节点而不会产生循环错误。
例如,如果我想创建一个 [1->2->3] 的节点,下面是我的思考过程:
a=node(1,None,b)
b=node(2,a,c)
c=node(3,b,None)
但是,这不会导致循环错误,因为 a 由 b 定义,而 b 反过来由 a 定义,类似地对于 c,b 用于定义 c,同时 c 用于定义 b。如果某事物的输入依赖于它的输出,我们如何才能找到它的价值呢?
我现在有点困惑,如果你能对此有所了解,我将不胜感激。谢谢
解决方案
您需要创建第一个没有链接的节点,然后在添加相邻节点时修改链接。
例如,我会改为Node
这样:
class ListNode:
def __init__(self, val, prev=None, next=None):
self.val = val
self.prev = prev
if prev is not None:
prev.next = self
self.next = next
if next is not None:
next.prev = self
然后像这样使用它:
a = ListNode(1)
b = ListNode(2, a)
c = ListNode(3, b)
推荐阅读
- javascript - Chrome 扩展:使用参数启动选项页面
- c# - 属性更改时页面不更新
- java - Tomcat 在本地主机上工作正常,但在部署时出现内部服务器错误
- javascript - 是否可以保证 onchange 会比添加到标签的事件更早运行?
- java - 如何更快地对 ArrayList 进行排序?
- github - Heroku:通过 GitHub 自动部署没有 Slack 通知
- delphi - 如何禁用使用 CEF 呈现网页的其他应用程序的硬件加速?
- java - 反序列化为大小为 0 的数组
- javascript - 使用 JavaScript 动态更改背景颜色
- java - 如何从PDF图像中提取文本