File tree Expand file tree Collapse file tree 1 file changed +57
-0
lines changed Expand file tree Collapse file tree 1 file changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Stack: Last In - First Out (LIFO)
2
+
3
+ # Define node format: value and a pointier to next
4
+ class Node :
5
+ def __init__ (self , value : int ) -> None :
6
+ self .value = value
7
+ self .next = None
8
+
9
+
10
+ class DynamicStack :
11
+ def __init__ (self ) -> None :
12
+ self .__first = None
13
+
14
+ def isEmpty (self ) -> bool :
15
+ if not self .__first :
16
+ return True
17
+ return False
18
+
19
+ def push (self ,value : int ):
20
+ node = Node (value )
21
+ node .next = self .__first
22
+ self .__first = node
23
+
24
+ def pop (self ) -> int :
25
+ if self .isEmpty ():
26
+ raise Exception ('Stack is empty!' )
27
+ removedElement = self .__first .value
28
+ self .__first = self .__first .next
29
+ return removedElement
30
+
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
+ def main () -> None :
41
+ dynamic_stack = DynamicStack ()
42
+
43
+ print (f'Push(1,2,4):' )
44
+ dynamic_stack .push (1 )
45
+ dynamic_stack .push (2 )
46
+ dynamic_stack .push (4 )
47
+
48
+ dynamic_stack .show ()
49
+
50
+ print (f'Remove last: { dynamic_stack .pop ()} ' )
51
+ print (f'Remove last: { dynamic_stack .pop ()} ' )
52
+ print (f'Remove last: { dynamic_stack .pop ()} ' )
53
+ print ('Empty stack!' )
54
+ dynamic_stack .show ()
55
+
56
+ if __name__ == "__main__" :
57
+ main ()
You can’t perform that action at this time.
0 commit comments