在我的 DVL class 中添加一个范围函数到 python 中的双向链表
Add a range function in my DVL class to doubly linked list in python
我目前正在查看 python 中的双向链表,我遇到了以下问题:我想创建一个范围函数 - range(start, stop, step) - 它应该给我全部从 position start 到 position stop 的值。如果传递了一个值步骤,则要考虑这些步骤。
现在我只有双向链表的基础知识,如果你能帮助我就太好了。提前谢谢你
class Node:
def __init__(self, value):
self.value = value
self.next = None
self.previous = None
class DVL:
def __init__(self):
self.first = None
self.last = None
def add(self, value):
new_node = Node(value)
if self.last == None:
# add first node
self.last = new_node
self.first = new_node
else:
new_node.previous = self.last
self.last.next = new_node
self.last = new_node
def print_forward(self):
node = self.first
while(node is not None):
print(node.value)
node = node.next
我还没有测试过这个,但你可以按照同样的思路思考。
我假设 start < end
和 step >= 1
。可以针对通用 range
函数修改代码。
def _skip_n(self, node, n):
count = 0
while count <= n:
node = node.next
count += 1
return node
def range(self, start, end, step): # assumes end is less than or equal to length of the list
res = []
node = self.first
for i in range(start, end, step):
res.append(node.value)
node = self._skip_n(node, step)
return res
我目前正在查看 python 中的双向链表,我遇到了以下问题:我想创建一个范围函数 - range(start, stop, step) - 它应该给我全部从 position start 到 position stop 的值。如果传递了一个值步骤,则要考虑这些步骤。 现在我只有双向链表的基础知识,如果你能帮助我就太好了。提前谢谢你
class Node:
def __init__(self, value):
self.value = value
self.next = None
self.previous = None
class DVL:
def __init__(self):
self.first = None
self.last = None
def add(self, value):
new_node = Node(value)
if self.last == None:
# add first node
self.last = new_node
self.first = new_node
else:
new_node.previous = self.last
self.last.next = new_node
self.last = new_node
def print_forward(self):
node = self.first
while(node is not None):
print(node.value)
node = node.next
我还没有测试过这个,但你可以按照同样的思路思考。
我假设 start < end
和 step >= 1
。可以针对通用 range
函数修改代码。
def _skip_n(self, node, n):
count = 0
while count <= n:
node = node.next
count += 1
return node
def range(self, start, end, step): # assumes end is less than or equal to length of the list
res = []
node = self.first
for i in range(start, end, step):
res.append(node.value)
node = self._skip_n(node, step)
return res