python自定义链表是否在每个节点中携带所有属性?
我正在尝试将一个文件转换成Java。然而,我很难弄清楚Arc类是如何工作的 我以前在Java中实现过链表,但这里的实现似乎与我所习惯的非常不同。我不完全确定它是否是一个链表,只是因为这个类以后的使用方式似乎是这样的 这里的Arc类是否在每个节点中携带所有属性 Arc类: 正在使用的Arc类示例:python自定义链表是否在每个节点中携带所有属性?,python,linked-list,doubly-linked-list,Python,Linked List,Doubly Linked List,我正在尝试将一个文件转换成Java。然而,我很难弄清楚Arc类是如何工作的 我以前在Java中实现过链表,但这里的实现似乎与我所习惯的非常不同。我不完全确定它是否是一个链表,只是因为这个类以后的使用方式似乎是这样的 这里的Arc类是否在每个节点中携带所有属性 Arc类: 正在使用的Arc类示例: 在你的问题中可能会有轻微的命名混乱,但只要我理解正确,比如说,简短的回答是:是的 假设“节点”是指第一个代码段中构造的Arc类型对象的每个实例,则所有属性都绑定到一个实例,至少从这段代码来看,将它们定义
在你的问题中可能会有轻微的命名混乱,但只要我理解正确,比如说,简短的回答是:是的
假设“节点”是指第一个代码段中构造的Arc类型对象的每个实例,则所有属性都绑定到一个实例,至少从这段代码来看,将它们定义为上述类属性似乎没有任何特殊用途或意义。谢谢!我同意他们的定义是奇怪的。Python实现本身是从C++实现中获取的。我承认代码本身没有任何上下文,但通常当我看到类似的内容时,我倾向于怀疑其他语言影响/习惯。
class Arc:
p = None
pprev = None
pnext = None
e = None
s0 = None
s1 = None
def __init__(self, p, a=None, b=None):
self.p = p
self.pprev = a
self.pnext = b
self.e = None
self.s0 = None
self.s1 = None
def process_event(self):
# get next event from circle pq
e = self.event.pop()
if e.valid:
# start new edge
s = Segment(e.p)
self.output.append(s)
# remove associated arc (parabola)
a = e.a # <-- a is an "Arc" type
if a.pprev is not None:
a.pprev.pnext = a.pnext
a.pprev.s1 = s
if a.pnext is not None:
a.pnext.pprev = a.pprev
a.pnext.s0 = s
# finish the edges before and after a
if a.s0 is not None: a.s0.finish(e.p)
if a.s1 is not None: a.s1.finish(e.p)
# recheck circle events on either side of p
if a.pprev is not None: self.check_circle_event(a.pprev, e.x)
if a.pnext is not None: self.check_circle_event(a.pnext, e.x)