Python 更新双链表中的尾部
在我的双链表类中,我有一个关于更新self.tail的问题,专门针对我的add\u to\u head方法。我写了一个单独的函数来实现这一点,但我只是想知道是否有更有效的方法来实现它。 以下是我所拥有的:Python 更新双链表中的尾部,python,python-3.4,doubly-linked-list,Python,Python 3.4,Doubly Linked List,在我的双链表类中,我有一个关于更新self.tail的问题,专门针对我的add\u to\u head方法。我写了一个单独的函数来实现这一点,但我只是想知道是否有更有效的方法来实现它。 以下是我所拥有的: def add_to_head(self, data): '''(input)-> None takes any type of input and creates a node with that input as data. Takes that node a
def add_to_head(self, data):
'''(input)-> None
takes any type of input and creates a node with that input as data.
Takes that node and adds it to the front of the list
'''
new_node = DLLNode(data)
if self.head == None:
self.head = self.tail = new_node
else:
self.head.prev = new_node
new_node.next = self.head
self.head = new_node
self.update_tail()
def update_tail(self):
'''(DLLList)->None
updates the tail of the DLLList
'''
current = self.head
while current != None:
current = current.next
current = self.tail
这是假设在创建此类时self.tail和self.head已设置为“无”。另外,我调用此函数的唯一时间是在调用add_to_head方法时,因为当我添加到列表末尾时,我已经在更新尾部。
我还可以用其他什么方法来实现这一点?我不太清楚您在这里问的是什么。当添加到列表的头部时,您唯一关心尾部的时间是当列表为空时,您已经注意到了这一点。如果列表不为空,则不需要更新尾部。此外,更新尾部功能当前不起任何作用。您似乎没有在
更新尾部中执行任何操作?它不会返回任何东西,也不会产生任何副作用。对此表示抱歉。我的init包含两个变量self.head和self.tail。当我将一个项目添加到列表的前面时,我希望能够跟踪self.tail。我现在意识到我应该首先将最后一行更改为self.tail=current。我只是想知道是否有不同的方法,我只是想出来了。我根本不需要updatetail函数。正如你所说的David,如果列表是空的,我需要更新它,如果它不是我的第一个tail赋值,那么我们输入的值保持不变。谢谢