class Queue: def __init__(self): self.__list = LinkedList() self.__rear = Node() self.__front = Node() self.__size = 0 def size(self): return self.__list.size() def is_empty(self): return self.size == 0 def front(self): return self.__front def enqueue(self, elem): e = Node(elem) if self.__list.head() != None: self.__rear.set_next(e) else: self.__list.add_head(e) self.__front = e self.__rear = e def dequeue(self): if self.__list.head() != None: temp = self.__front self.__list.remove_head() self.__front = self.__front.get_next() return temp.get_element() else: print('Queue is empty, cannot remove element!') return 1 def __repr__(self): result = "-> " p = self.__list.head() print(p) if p is not None: while p is not None: result += "%s " % str(p.get_element()) p = p.get_next() return result
def test_insersection(self): llist = LinkedList() llist.append(1) llist.append(2) llist.append(3) llist.append(4) llist.append(5) llist2 = LinkedList() llist2.head = llist.head.next.next llist2.push(8) llist2.push(7) llist2.push(6) self.assertEqual(llist.get_intersection(llist2).data, 3)
def test_multi_flatten(self): llist = LinkedList() node1 = Node(10) node11 = Node(4) node12 = Node(20) node121 = Node(2) node13 = Node(13) node131 = Node(16) node1311 = Node(3) node2 = Node(5) node3 = Node(12) node4 = Node(7) node41 = Node(17) node411 = Node(9) node4111 = Node(19) node4112 = Node(15) node412 = Node(8) node42 = Node(6) node5 = Node(11) node1.child = node11 node11.next = node12 node12.child = node121 node12.next = node13 node13.child = node131 node131.child = node1311 node1.next = node2 node2.next = node3 node3.next = node4 node4.next = node5 node4.child = node41 node41.next = node42 node41.child = node411 node411.next = node412 node411.child = node4111 node4111.next = node4112 llist.head = node1 llist.multi_flatten() self.assertEqual(str(llist), '10512711420131762169831915')