Ejemplo n.º 1
0
 def test_delete_first_existing(self):
     list = DoublyLinkedList()
     list.insertLast(1, {"a": 1})
     list.insertLast(2, {"b": 2})
     list.insertAfter(2, 3, {"c": 3})
     self.assertEqual(list.deleteFirst().data['a'], 1)
     self.assertEqual(len(list.array()), 2)
Ejemplo n.º 2
0
class ListDeque:
    # TODO limit size
    def __init__(self, size=0):
        self.list_obj = DoublyLinkedList()

# top of the stack is

    def list(self):
        return [link.key for link in self.list_obj.array()]

    def isEmpty(self):
        return self.list_obj.isEmpty()

    def insert(self, key):
        self.list_obj.insertLast(key, None)

    def push(self, key):
        self.list_obj.insertFirst(key, None)

    def remove(self):
        if self.isEmpty():
            raise ValueError("Removing from empty deque")
        return self.list_obj.deleteFirst().key

    def pop(self):
        if self.isEmpty():
            raise ValueError("Popping from empty deque")
        return self.list_obj.deleteLast().key

    def head(self):
        if self.isEmpty():
            raise ValueError("Reading head from empty deque")
        return self.list_obj.first.key

    def peek(self):
        if self.isEmpty():
            raise ValueError("Peeking from empty deque")
        return self.list_obj.last.key
Ejemplo n.º 3
0
 def test_delete_first_non_existing(self):
     list = DoublyLinkedList()
     self.assertEqual(list.deleteFirst(), None)