[Python] doubly Linked list iterator python

Discussão em 'Python' iniciado por Stack, Fevereiro 14, 2025.

  1. Stack

    Stack Membro Participativo

    I am constructing a doubly linked list and I am struggling on construct a doubly linked list iterator method in PYTHON.

    This is my code so far

    class DoubleListNode:
    def __init__(self,data):
    self.data=data
    self.prev = None
    self.next= None

    class ListIterator:
    def __init__(self):
    self._current = self.head

    def __iter__(self):
    return self

    def next(self):
    if self.size == 0 :
    raise StopIteration
    else:
    item = self._current.data
    self._current=self._current.next
    return item

    class DoublyLinkedList:
    def __init__(self):
    self.head= None
    self.tail= None
    self.size = 0

    def add(self,data):
    newnode= DoubleListNode(data)
    self.size+=1
    if self.head is None:
    self.head = newnode
    self.tail = self.head
    elif data < self.head.data: # before head
    newnode.next = self.head
    self.head.prev= newnode
    self.head= newnode
    elif data > self.tail.data: # at the end
    newnode.prev= self.tail
    self.tail.next= newnode
    self.tail=newnode
    else:
    curNode = self.head
    while curNode is not None and curNode.data < data:
    curNode=curNode.next
    newnode.next= curNode
    newnode.prev=curNode.prev
    curNode.prev.next= newnode
    curNode.prev=newnode

    def remove(self,data):
    curNode=self.head
    while curNode is not None and curNode.data!= data:
    curNode= curNode.next
    if curNode is not None:
    self.size -= 1
    if curNode is self.head:
    self.head= curNode.next
    else:
    curNode.prev.next=curNode.next
    if curNode is self.tail:
    self.tail=curNode.prev
    else:
    curNode.next.prev=curNode.prev


    When I run a test it said TypeError: iteration over non-sequence. Did I do something wrong ?

    Continue reading...

Compartilhe esta Página