10FG
10FG

Reputation: 3

What are the definitions for a queue in Python?

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

Answers (2)

MGP
MGP

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)

Using Lists as Stacks

>>> 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)

Using Lists as Queues

>>> 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

JDurstberger
JDurstberger

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

Related Questions