class Stack:
def __init__(self):
self.items = []
self.max = 5
def push(self, item):
if self.items.len < 5:
self.items.append(item)
else:
print('abort push in order to prevent stack overflow')
def pop(self):
if not self.items:
self.items.pop()
else:
print('stack is empty. abort pop to prevent stack underflow')
def is_empty(self):
return not self.items
def peek(self):
return self.items[len(self.items)-1]
class Node:
def __init__(self, item):
self.data = item
self.next = None
class Stack:
def __init__(self):
self.head = None
def is_empty(self):
return not self.head
def push(self, item):
node_data = Node(item)
node_data.next = self.head
self.head = node_data
def pop(self):
if self.is_empty():
return
ret_data = self.head.data
self.head = self.head.next
return ret_data
def peek(self):
if self.is_empty():
return
return self.head.data