如何在类似结构的链表中插入新节点? [英] How to insert a new node in a link list like structure?

查看:57
本文介绍了如何在类似结构的链表中插入新节点?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在这个类似链表的结构中在 2 和 3 之间插入 2.5.

I want to insert 2.5 between 2 and 3 in this linklist-like structure.

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?以及如何制作?有些变化.但同样的问题.

Why is the result of outputs not 1 -> 2 -> 2.5-> 3? and how to make it? Some change. But the same question.

推荐答案

你移动到下一个节点声明:

Your move to the next node statement:

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

这篇关于如何在类似结构的链表中插入新节点?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆