コード例 #1
0
class Queue:
    def __init__(self):
        self.size = 0
        self.storage = SinglyLinkedList()

    def __len__(self):
        # returns the length of the queue
        return self.size

    def enqueue(self, value):
        # increase the size of the queue by one
        self.size += 1
        # add the new value to the tail of our list
        self.storage.add_to_tail(value)

    def dequeue(self):
        # return 0 if nothing is in the queue
        if self.size == 0:
            return None
        # decrement the size of the queue by one
        self.size -= 1
        # remove the value from the head of our list and return the value of the
        # removed head
        value = self.storage.remove_head()
        return value
 def test_get_max(self):
     """
     Tests that the maximum value in the list is
     returned.
     """
     sll = SinglyLinkedList()
     sll.add_to_head(3)
     sll.add_to_tail(9)
     sll.add_to_head(10)
     sll.add_to_head(4)
     max_val = sll.get_max()
     self.assertEqual(max_val, 10)
    def test_add_to_tail(self):
        """
        Tests that a new Node has been added to
        the tail of the list.
        """
        def get_tail_val(list):
            currentNode = list.head
            while currentNode.next:
                currentNode = currentNode.next
            return currentNode.value

        sll = SinglyLinkedList()
        sll.add_to_tail(1)
        sll.add_to_tail(2)
        self.assertEqual(get_tail_val(sll), 2)
        sll.add_to_tail(90)
        self.assertEqual(get_tail_val(sll), 90)
        self.assertEqual(len(sll), 3)
コード例 #4
0
class Queue:
    def __init__(self):
        self.size = 0
        # Why is our DLL a good choice to store our elements?
        self.storage = SinglyLinkedList()

    def enqueue(self, value):
        self.storage.add_to_tail(value)
        self.size += 1
        # print(f"Enqueued successfully; queue size is now {self.size}")

    def dequeue(self):
        print(self.size, self.size > 0)
        if self.size > 0:
            self.size -= 1
            return self.storage.remove_from_head()
        return None

    def len(self):
        return self.size
コード例 #5
0
class SinglyLinkedListTests(unittest.TestCase):
    def setUp(self):
        self.list = SinglyLinkedList()

    def test_add_to_tail(self):
        self.list.add_to_tail(1)
        self.assertEqual(self.list.tail.value, 1)
        self.assertEqual(self.list.head.value, 1)
        self.list.add_to_tail(2)
        self.assertEqual(self.list.tail.value, 2)
        self.assertEqual(self.list.head.value, 1)

    def test_contains(self):
        self.list.add_to_tail(1)
        self.list.add_to_tail(2)
        self.list.add_to_tail(5)
        self.list.add_to_tail(10)
        self.assertTrue(self.list.contains(10))
        self.assertTrue(self.list.contains(2))
        self.assertFalse(self.list.contains(1000))

    def test_remove_head(self):
        self.list.add_to_tail(10)
        self.list.add_to_tail(20)
        self.assertEqual(self.list.remove_head(), 10)
        self.assertFalse(self.list.contains(10))
        self.assertEqual(self.list.remove_head(), 20)
        self.assertFalse(self.list.contains(20))

        self.list.add_to_tail(10)
        self.assertEqual(self.list.remove_head(), 10)    
        self.assertIsNone(self.list.head)
        self.assertIsNone(self.list.tail)
        self.assertIsNone(self.list.remove_head())

    def test_get_max(self):
        self.assertIsNone(self.list.get_max())
        self.list.add_to_tail(100)
        self.assertEqual(self.list.get_max(), 100)
        self.list.add_to_tail(55)
        self.assertEqual(self.list.get_max(), 100)
        self.list.add_to_tail(101)
        self.assertEqual(self.list.get_max(), 101)