65 lines
1.2 KiB
Python
65 lines
1.2 KiB
Python
|
|
|
||
|
|
# implemented by Linked list
|
||
|
|
class Node(object):
|
||
|
|
def __init__(self, item = None):
|
||
|
|
self.item = item
|
||
|
|
self.next = None
|
||
|
|
self.previous = None
|
||
|
|
|
||
|
|
|
||
|
|
class Queue(object):
|
||
|
|
def __init__(self):
|
||
|
|
self.length = 0
|
||
|
|
self.head = None
|
||
|
|
self.tail = None
|
||
|
|
|
||
|
|
def enqueue(self, x):
|
||
|
|
newNode = Node(x)
|
||
|
|
if self.head == None:
|
||
|
|
self.head = self.tail = newNode
|
||
|
|
else:
|
||
|
|
self.tail.next = newNode
|
||
|
|
newNode.previous = self.tail
|
||
|
|
self.tail = newNode
|
||
|
|
self.length += 1
|
||
|
|
|
||
|
|
|
||
|
|
def dequeue (self):
|
||
|
|
item = self.head.item
|
||
|
|
self.head = self.head.next
|
||
|
|
self.length -= 1
|
||
|
|
if self.length == 0:
|
||
|
|
self.last = None
|
||
|
|
return item
|
||
|
|
|
||
|
|
|
||
|
|
#################################################
|
||
|
|
|
||
|
|
# implemented by array
|
||
|
|
class Queue:
|
||
|
|
def __init__(self):
|
||
|
|
self.items = []
|
||
|
|
|
||
|
|
def is_empty(self):
|
||
|
|
return self.items == []
|
||
|
|
|
||
|
|
def enqueue(self, data):
|
||
|
|
self.items.append(data)
|
||
|
|
|
||
|
|
def dequeue(self):
|
||
|
|
return self.items.pop(0)
|
||
|
|
|
||
|
|
def display(self):
|
||
|
|
ar = []
|
||
|
|
for i in self.items:
|
||
|
|
ar.append(i)
|
||
|
|
return ar
|
||
|
|
que = Queue()
|
||
|
|
que.enqueue('google')
|
||
|
|
que.enqueue('youtube')
|
||
|
|
que.enqueue('udemy')
|
||
|
|
que.enqueue('udacity')
|
||
|
|
que.dequeue()
|
||
|
|
que.dequeue()
|
||
|
|
print(que.display())
|