Beispiel #1
0
 def __new__(cls, comp, **kwargs):
     raise_if_backend_is_not_python(cls,
                                    kwargs.get('backend', Backend.PYTHON))
     obj = object.__new__(cls)
     obj.items = SinglyLinkedList()
     obj.comp = comp
     return obj
Beispiel #2
0
 def __new__(cls, items=None):
     obj = object.__new__(cls)
     obj.stack = SinglyLinkedList()
     if items is None:
         pass
     elif type(items) in (list, tuple):
         for x in items:
             obj.push(x)
     else:
         raise TypeError("Expected type: list/tuple")
     return obj
 def __new__(cls, items=None, double_ended=False):
     obj = object.__new__(cls)
     obj.queue = SinglyLinkedList()
     if items is None:
         pass
     elif type(items) in (list, tuple):
         for x in items:
             obj.append(x)
     else:
         raise TypeError("Expected type: list/tuple")
     obj._double_ended = double_ended
     return obj
Beispiel #4
0
 def __new__(cls, items=None, **kwargs):
     raise_if_backend_is_not_python(cls,
                                    kwargs.get('backend', Backend.PYTHON))
     obj = object.__new__(cls)
     obj.stack = SinglyLinkedList()
     if items is None:
         pass
     elif type(items) in (list, tuple):
         for x in items:
             obj.push(x)
     else:
         raise TypeError("Expected type: list/tuple")
     return obj
Beispiel #5
0
 def __new__(cls, items=None, dtype=NoneType):
     obj = object.__new__(cls)
     obj.queue = SinglyLinkedList()
     obj._dtype = dtype
     if items is None:
         pass
     elif type(items) in (list, tuple):
         if len(items) != 0 and dtype is NoneType:
             obj._dtype = type(items[0])
         for x in items:
             if type(x) == obj._dtype:
                 obj.queue.append(x)
             else:
                 raise TypeError("Expected %s but got %s" %
                                 (obj._dtype, type(x)))
     else:
         raise TypeError("Expected type: list/tuple")
     obj.front = obj.queue.head
     obj.rear = obj.queue.tail
     obj.size = obj.queue.size
     return obj
def test_SinglyLinkedList():
    random.seed(1000)
    sll = SinglyLinkedList()
    assert raises(IndexError, lambda: sll[2])
    sll.append_left(5)
    sll.append(1)
    sll.append_left(2)
    sll.append(3)
    sll.insert_after(sll[1], 4)
    sll.insert_after(sll[-1], 6)
    sll.insert_at(0, 2)
    sll.insert_at(-1, 9)
    sll.extract(2)
    sll.extract(0)
    sll.extract(-1)
    sll[-2].data = 0
    assert str(sll) == "[2, 4, 1, 0, 9]"
    assert len(sll) == 5
    assert raises(IndexError, lambda: sll.insert_at(6, None))
    assert raises(IndexError, lambda: sll.extract(20))
    sll_copy = copy.deepcopy(sll)
    for i in range(len(sll)):
        if i % 2 == 0:
            sll.pop_left()
        else:
            sll.pop_right()
    assert str(sll) == "[]"
    for _ in range(len(sll_copy)):
        index = random.randint(0, len(sll_copy) - 1)
        sll_copy.extract(index)
    assert str(sll_copy) == "[]"
    assert raises(ValueError, lambda: sll_copy.extract(1))
def test_SinglyLinkedList():
    random.seed(1000)
    sll = SinglyLinkedList()
    assert raises(IndexError, lambda: sll[2])
    sll.appendleft(5)
    sll.append(1)
    sll.appendleft(2)
    sll.append(3)
    sll.insert_after(sll[1], 4)
    sll.insert_after(sll[-1], 6)
    sll.insert_at(0, 2)
    sll.insert_at(-1, 9)
    sll.extract(2)
    assert sll.popleft().key == 2
    assert sll.popright().key == 6
    sll[-2].key = 0
    assert str(sll) == "['2', '4', '1', '0', '9']"
    assert len(sll) == 5
    assert raises(IndexError, lambda: sll.insert_at(6, None))
    assert raises(IndexError, lambda: sll.extract(20))
    sll_copy = DoublyCircularLinkedList()
    for i in range(sll.size):
        sll_copy.append(sll[i])
    for i in range(len(sll)):
        if i % 2 == 0:
            sll.popleft()
        else:
            sll.popright()
    assert str(sll) == "[]"
    for _ in range(len(sll_copy)):
        index = random.randint(0, len(sll_copy) - 1)
        sll_copy.extract(index)
    assert str(sll_copy) == "[]"
    assert raises(ValueError, lambda: sll_copy.extract(1))
Beispiel #8
0
 def __new__(cls, comp):
     obj = object.__new__(cls)
     obj.items = SinglyLinkedList()
     obj.comp = comp
     return obj