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