Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python自定义链表是否在每个节点中携带所有属性?_Python_Linked List_Doubly Linked List - Fatal编程技术网

python自定义链表是否在每个节点中携带所有属性?

python自定义链表是否在每个节点中携带所有属性?,python,linked-list,doubly-linked-list,Python,Linked List,Doubly Linked List,我正在尝试将一个文件转换成Java。然而,我很难弄清楚Arc类是如何工作的 我以前在Java中实现过链表,但这里的实现似乎与我所习惯的非常不同。我不完全确定它是否是一个链表,只是因为这个类以后的使用方式似乎是这样的 这里的Arc类是否在每个节点中携带所有属性 Arc类: 正在使用的Arc类示例: 在你的问题中可能会有轻微的命名混乱,但只要我理解正确,比如说,简短的回答是:是的 假设“节点”是指第一个代码段中构造的Arc类型对象的每个实例,则所有属性都绑定到一个实例,至少从这段代码来看,将它们定义

我正在尝试将一个文件转换成Java。然而,我很难弄清楚Arc类是如何工作的

我以前在Java中实现过链表,但这里的实现似乎与我所习惯的非常不同。我不完全确定它是否是一个链表,只是因为这个类以后的使用方式似乎是这样的

这里的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)