class Queue(Generic[T]): llist = LinkedList.DoublyLinkedList() def __init__(self, first_elem=None): if first_elem is not None: self.offer(first_elem) # return the size of the queue def size(self): return self.llist.size def isEmpty(self): return self.size() == 0 # peek the element at the front of the queue # the method throws an error if the queue is empty def peek(self): if self.isEmpty(): raise QueueError("Queue is empty!") return self.llist.peekFirst() # poll an element from the front of the queue # the method throws an error if the queue is empty def poll(self): if self.isEmpty(): raise QueueError("Queue is empty!") return self.llist.removeLast() # add an element to the back of the queue def offer(self, elem): self.llist.addLast(elem)
def main(): data1 = "hello" data2 = "I" data3 = "am" data4 = "your" data5 = "father" data6 = "luke" data7 = "skywalker" linked_list = LinkedList.DoublyLinkedList() linked_list.add(data1) linked_list.add(data2) linked_list.add(data3) linked_list.add(data4) linked_list.add(data5) linked_list.add(data6) linked_list.add(data7) print(linked_list) linked_list.removeFirst() linked_list.removeLast() print(linked_list) print(linked_list.contains("your")) print(linked_list.peekLast())
def __init__(self, firstElem): self.linked_list = LinkedList.DoublyLinkedList() if firstElem is not None: self.push(firstElem)