python 自定义链表是否在每个节点中携带它们的所有属性?
do python custom linked-lists carry all their attributes in each node?
我正在尝试将 Python voronoi diagram generator 翻译成 Java。但是,我无法弄清楚 Arc class 的工作原理。
我以前在Java实现过链表,但是这里的实现好像和我习惯的很不一样。我不完全确定它是一个链表,它看起来像它是因为稍后使用 class 的方式。
这里的圆弧class是否在每个节点中承载了它的所有属性?
圆弧class:
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
正在使用的弧 class 示例:
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)
您的问题中可能存在轻微的术语混淆,但只要我理解正确并且对于给定的示例,简短的回答是:是的。
假设节点是指 Arc
类型对象的每个实例,如在第一个代码段中构造的那样,所有属性都绑定到一个实例(至少从这段代码来看),并将它们定义为class 以上属性似乎没有任何特定用途或意义。
我正在尝试将 Python voronoi diagram generator 翻译成 Java。但是,我无法弄清楚 Arc class 的工作原理。
我以前在Java实现过链表,但是这里的实现好像和我习惯的很不一样。我不完全确定它是一个链表,它看起来像它是因为稍后使用 class 的方式。
这里的圆弧class是否在每个节点中承载了它的所有属性?
圆弧class:
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
正在使用的弧 class 示例:
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)
您的问题中可能存在轻微的术语混淆,但只要我理解正确并且对于给定的示例,简短的回答是:是的。
假设节点是指 Arc
类型对象的每个实例,如在第一个代码段中构造的那样,所有属性都绑定到一个实例(至少从这段代码来看),并将它们定义为class 以上属性似乎没有任何特定用途或意义。