-
Notifications
You must be signed in to change notification settings - Fork 0
/
queue.py
33 lines (23 loc) · 882 Bytes
/
queue.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from singly_linked_list import SinglyLinkedList
class Queue:
"""Queue data structure implementation using linked list"""
def __init__(self, max_size):
if not isinstance(max_size, int):
raise Exception('size must be int greater than 0')
if (max_size < 1):
raise Exception('size must be int greater than 0')
self.top = 0
self.max_size = max_size
self.llist = SinglyLinkedList()
def enqueue(self, val):
"""add item into queue"""
if self.top >= self.max_size:
raise Exception('Queue is full')
self.llist.add(val)
self.top += 1
def dequeue(self):
"""remove item from queue"""
if self.top == 0:
raise Exception('Queue is empty')
self.top -= 1
return self.llist.remove_tail()