Esempio n. 1
0
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
Esempio n. 2
0
    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)
Esempio n. 3
0
 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')