Reputation: 3
I have some code for a stack which looks like this:
class Stack():
def init(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def pop(self):
return self.items.pop()
def getElements(self):
return self.items
What would the equivalent be for a queue?
Upvotes: 0
Views: 121
Reputation: 3031
Don't use Python like Java, defining classes for such basic ADTs is not "Pythonic", not to mention it goes against performance due to extra wrapping.
The built-in lists can do that and much more.
A Stack is LIFO (Last In First Out)
>>> stack = []
# push, use append
>>> stack.append(1)
>>> stack.append(2)
>>> stack.append(3)
# pop
>>> stack.pop() # to get the last inserted element
>>>
3
# isEmpty
>>> if stack:
>>> print('not empty')
A Queue is FIFO (First In First Out)
>>> queue = collections.deque()
# push, use append
>>> queue.append(1)
>>> queue.append(2)
>>> queue.append(3)
# pull, use popleft to get the "first" inserted element
>>> queue.popleft()
>>>
1
Upvotes: 1
Reputation: 4255
A Queue is First-In-First-Out and it is really easy to do this.
class Stack:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def pop(self):
return self.items.pop()
def get_elements(self):
return self.items
class Queue:
def __init__(self):
self.items = []
def is_empty(self):
return self.items == []
def push(self, item):
return self.items.append(item)
def pull(self):
return self.items.pop(0)
def get_elements(self):
return self.items
stack = Stack() # items = []
stack.push("A") # items = ["A"]
stack.push("B") # items = ["A", "B"]
stack.push("C") # items = ["A", "B", "C"]
stack.pop() # items = ["A", "B"]
queue = Queue() # items = []
queue.push("A") # items = ["A"]
queue.push("B") # items = ["A", "B"]
queue.push("C") # items = ["A", "B", "C"]
queue.pull() #items = ["B", "C"]
Upvotes: 1