Stack Algorithms

Create a Stack Algorithm
class Stack:
    def __init__(self):
        self.items = []
 
    def push(self, data):
        self.items.append(data)
 
    def pop(self):
        return self.items.pop()
 
    def size(self):
        return len(self.items)
 
    def is_empty(self):
        return len(self.items) == 0
 
    def peek(self):
        return self.items[−1]
Create a Linked List Stacks Algorithm
class Node:
    def __init__(self, data):
        self.data = data
        self.next = None
 
 
class Stack:
    def __init__(self):
        self.head = None
 
    def push(self, data):
        node = Node(data)
        if self.head is None:
            self.head = node
        else:
            node.next = self.head
            self.head = node
 
    def pop(self):
        if self.head is None:
            raise IndexError('pop from empty stack')
        poppednode = self.head
        self.head = self.head.next
        return poppednode.data
Min Stack Algorithm
class MinStack():  
    def __init__(self):  
        self.main = []  
        self.min = []  
 
    def push(self, n):
        if len(self.main) == 0:  
            self.min.append(n)  
        elif n <= self.min[−1]:  
            self.min.append(n)  
        else:  
            self.min.append(self.min[−1])  
        self.main.append(n)  
 
    def pop(self):  
        self.min.pop()  
        return self.main.pop()  
 
    def get_min(self):  
        return self.min[−1]
XX Stack Algorithm

XX Stack Algorithm

XX Stack Algorithm

XX Stack Algorithm