在我的 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 < endstep >= 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