Skip to content

Commit a39bcb3

Browse files
authored
Merge pull request kelvins#264 from ribmarciojr/dynamic_stack
Add Dynamic Stack in Python
2 parents 7a288a4 + 252bfdc commit a39bcb3

File tree

2 files changed

+61
-2
lines changed

2 files changed

+61
-2
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2288,8 +2288,8 @@ In order to achieve greater coverage and encourage more people to contribute to
22882288
</a>
22892289
</td>
22902290
<td> <!-- Python -->
2291-
<a href="./CONTRIBUTING.md">
2292-
<img align="center" height="25" src="./logos/github.svg" />
2291+
<a href="./src/python/dynamic_stack.py">
2292+
<img align="center" height="25" src="./logos/python.svg" />
22932293
</a>
22942294
</td>
22952295
<td> <!-- Go -->

src/python/dynamic_stack.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Stack: Last In - First Out (LIFO)
2+
3+
4+
# Define node format: value and a pointier to next
5+
class Node:
6+
def __init__(self, value: int) -> None:
7+
self.value = value
8+
self.next = None
9+
10+
11+
class DynamicStack:
12+
def __init__(self) -> None:
13+
self.__first = None
14+
15+
def isEmpty(self) -> bool:
16+
if not self.__first:
17+
return True
18+
return False
19+
20+
def push(self, value: int):
21+
node = Node(value)
22+
node.next = self.__first
23+
self.__first = node
24+
25+
def pop(self) -> int:
26+
if self.isEmpty():
27+
raise Exception("Stack is empty!")
28+
removedElement = self.__first.value
29+
self.__first = self.__first.next
30+
return removedElement
31+
32+
def show(self) -> None:
33+
node = self.__first
34+
print("[", end=" ")
35+
while node:
36+
print(node.value, end=" ")
37+
node = node.next
38+
print("]")
39+
40+
41+
def main() -> None:
42+
dynamic_stack = DynamicStack()
43+
44+
print(f"Push(1,2,4):")
45+
dynamic_stack.push(1)
46+
dynamic_stack.push(2)
47+
dynamic_stack.push(4)
48+
49+
dynamic_stack.show()
50+
51+
print(f"Remove last: {dynamic_stack.pop()}")
52+
print(f"Remove last: {dynamic_stack.pop()}")
53+
print(f"Remove last: {dynamic_stack.pop()}")
54+
print("Empty stack!")
55+
dynamic_stack.show()
56+
57+
58+
if __name__ == "__main__":
59+
main()

0 commit comments

Comments
 (0)