【发布时间】:2017-11-22 08:15:26
【问题描述】:
我知道如何将一个项目附加到一个双向链接的前哨列表中,并且过去已经成功地实现了它。但是,我不确定如何在特定位置插入。例如,我有两个节点,想在它们之间插入一个值。由于链表中没有数字索引(我们使用链表的全部原因......),我如何修复此代码以便它可以在特定位置插入项目(这里的索引是一个描述性术语,不是数字索引):
def insert_element_at(self, val, index):
new_node = Linked_List.__Node(val)
if index >= self.size or index < 0:
raise IndexError
elif self.size == 0:
raise 'To add first value, please use append method.'
else:
self.current = self.header.next
count = 0
while count != index:
self.current = self.current.next
count += 1
self.current.next = new_node
new_node.next = self.current.next.next
new_node.prev = self.current
self.size += 1
在这种情况下,我使用“计数”来跟踪每次迭代的位置。这似乎不起作用,有人对我如何改进此代码有任何想法吗?我认为我遇到的主要问题是当它遇到我的字符串方法时:
def __str__(self):
if self.size == 0:
return '[ ]'
self.current = self.header.next
s = '[ '
while self.current is not self.trailer:
s += str(self.current.val)
s += ', '
self.current = self.current.next
s += ' ]'
return s
任何关于我如何改进它的想法或帮助都会很棒!
【问题讨论】:
标签: python-3.x doubly-linked-list