пользовательские связанные списки Python содержат все свои атрибуты в каждом узле? - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь перевести генератор диаграмм Python voronoi на Java. Однако мне сложно понять, как работает класс Arc.

Я реализовывал связанные списки в Java раньше, но реализация здесь, кажется, сильно отличается от того, к чему я привык. Я не совсем уверен, что это связанный список, похоже, он из-за того, как класс используется в дальнейшем.

Содержит ли класс Arc все свои атрибуты в каждом узле?

Класс Арк:

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

Пример используемого класса Arc:

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)

1 Ответ

0 голосов
/ 17 января 2019

В вашем вопросе может быть небольшая путаница в номенклатуре, но, насколько я понимаю это правильно и для данного примера, короткий ответ: да.

Предполагая, что под узлом вы подразумеваете каждый экземпляр Arc Тип объекта, созданный в первом фрагменте, все атрибуты привязаны к экземпляру (и, по крайней мере, из этого кода), определяя их также как атрибуты класса, приведенные выше, похоже, не служит какой-либо конкретной цели или не имеет большого смысла.

...