I wrote a class of simply linked list:
class ListNode: def __init__(self, v, nxt): self._value = v self._next = nxt def __repr__(self): return 'ListNode: Value: {0}, Next: {1}'.format(self._value, self._next) def __str__(self): return '({0}, {1})'.format(self._value, self._next) def getValue(self): return self._value def setValue(self, v): self._value = v def getNext(self): return self._next def setNext(self, v): self._next = v value = property(getValue, setValue) next = property(getNext, setNext) class ListNode2(ListNode): def __init__(self, v, nxt, prev): ListNode.__init__(self, v, nxt) self._previous = prev def __repr__(self): return 'ListNode: Value: {0}, Next: {1}, Previous: {2}'.format(self._value, self._next, self._previous) def __str__(self): return '({0}, {1}, {2})'.format(self._value, self._next, self._previous) def getPrevious(self): return self._previous def setPrevious(self, v): self._previous = v previous = property(getPrevious, setPrevious) class LinkedList: def __init__(self): self._head = None def getHead(self): return self._head head = property(getHead) def Add(self, node): node.next = self._head self._head = node def Remove(self): if self._head != None: self._head = self._head.next def __iter__(self): return self def next(self): current = self._head while current != None: yield current.Value current = current.next l = LinkedList() for i in range(10): l.Add(ListNode(i, None)) for data in l: # Надо, сделать так, чтобы так можно было перебирать весь список. print(data)