如何在链表python中获取头节点

时间:2016-11-09 07:39:47

标签: python

我一直试图找到获取第一批数据的方法。

这是我在数据库中的数据。

id    name     next
001   task1    002
002   task2    003
003   task3    000

我想要做的是获取headnode的第一个值,该值应为001,如数据库所示。

这是我的代码

while True:
    self.headNode = 000
    try:
        lastNode = Task.objects.get(next=self.headNode)
        self.headNode = lastNode.id
        break
    except Task.DoesNotExist:
        break

我在这里期望,self.headNode的值应为001,但它给了我003。请帮助我如何获得001。我现在已经有近一个月的时间了。

这是另一个数据示例。

id    name     next
222   task1    444
333   task2    222
444   task3    000

在这里......头节点应该是333并且知道这一点。我将获取next000的数据。然后得到它444。然后我会得到其他数据,其中下一个是444id222。最后得到next222的数据,然后您将获得ID 333。这样就可以显示头节点是333。我希望我已经清楚地解释了它。

1 个答案:

答案 0 :(得分:1)

循环只运行一次,因为您添加了break语句。

此外,由于headNode的初始值为000,lastNode将包含003,因为您已经编写了查询,过滤为next = 000,其中我们为id 003.这就是您获得003的原因

好的,所以如果headNode是下一个不是任何其他节点的节点,你可以这样检索它:

self.headNode = 000
while True:    
    try:
        lastNode = Task.objects.get(next=self.headNode)
        self.headNode = lastNode.id        
    except Task.DoesNotExist:
        print("Head Node ->", self.headNode)
        break