Stack

A stack is a linear data structure that follows the Last In, First Out (LIFO) principle. It allows for adding and removing elements in a specific order, where the last element added is the first one to be removed.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Stack:
def __init__(self):
self.__items = []

def __str__(self):
return str(self.__items)

@property
def size(self):
return len(self.__items)

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

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

def pop(self):
if self.is_empty():
raise IndexError("Stack is empty")
return self.__items.pop()

def peek(self):
if self.is_empty():
raise IndexError("Stack is empty")
return self.__items[self.size() - 1]