reading-notes

Stacks and Queues

Why?

What?

How?

class Stack:
    def __init__(self):
        self.items = []

    def push(self, item):
        self.items.append(item)

    def pop(self):
        if not self.is_empty():
            return self.items.pop()

    def is_empty(self):
        return len(self.items) == 0

class Node:
    def __init__(self, value=None):
        self.value = value
        self.next = None

class Queue:
    def __init__(self):
        self.head = None
        self.tail = None

    def enqueue(self, item):
        new_node = Node(item)
        if self.tail:
            self.tail.next = new_node
        else:
            self.head = new_node
        self.tail = new_node

    def dequeue(self):
        if not self.is_empty():
            dequeued = self.head
            self.head = self.head.next
            if not self.head:
                self.tail = None
            return dequeued.value

    def is_empty(self):
        return self.head is None

What I want to know more about

References

Stacks and Queues