如何将新节点插入链接列表之类的结构



我想在类似链接列表的结构中插入2至3之间的2.5。

class edge_model:
    def __init__(self):
        self.ymax = None
        self.xmin = None
        self.dx = None
        self.edge_next = None
if __name__ == '__main__':
    e1 = edge_model()
    e2 = edge_model()
    e3 = edge_model()
    e_in = edge_model()
    e1.dx = 1
    e2.dx = 2
    e3.dx = 3
    e_in.dx = 2.5
    e1.edge_next = e2
    e2.edge_next = e3
    e3.edge_next = None
    p = e1
    while p.edge_next:
        if e_in.dx < p.edge_next.dx:
        e_in.edge_next = p.edge_next
        p.edge_next = e_in
        break
    else:
        p = p.edge_next.edge_next
    print e1.dx
    print e1.edge_next.dx
    print e1.edge_next.edge_next.dx
    print "====="

为什么输出的结果不是1 -> 2 -> 2.5-> 3?以及如何做到?一些变化。但是同样的问题。

您移动到下一个节点语句:

p.edge_next = p.edge_next.edge_next

应该是:

p = p.edge_next

测试代码:

class edge_model:
    def __init__(self, dx):
        self.ymax = None
        self.xmin = None
        self.dx = dx
        self.edge_next = None
if __name__ == '__main__':
    e1 = edge_model(1)
    e2 = edge_model(2)
    e3 = edge_model(3)
    e_in = edge_model(2.5)
    e1.edge_next = e2
    e2.edge_next = e3
    p = e1
    while p.edge_next:
        if e_in.dx < p.edge_next.dx:
            e_in.edge_next = p.edge_next
            p.edge_next = e_in
            break
        else:
            p = p.edge_next
    print("===")
    print(e1.dx)
    print(e1.edge_next.dx)
    print(e1.edge_next.edge_next.dx)

结果:

===
1
2
2.5

最新更新