File tree Expand file tree Collapse file tree 1 file changed +14
-19
lines changed Expand file tree Collapse file tree 1 file changed +14
-19
lines changed Original file line number Diff line number Diff line change 1
1
class Node :
2
2
def __init__ (self , key = None , next = None ):
3
- self ._key = key
4
- self ._next = next
3
+ self .key = key
4
+ self .next = next
5
5
6
6
7
7
class Stack :
8
- def __init__ (self ,):
9
- self ._length : int = length
10
- self ._stack : list = [None ] * self ._length
11
- self ._pointer : int = - 1
8
+ def __init__ (self ):
9
+ self ._head : Node = None
10
+ self ._count : int = 0
12
11
13
12
def is_empty (self ) -> bool :
14
- return self ._pointer == - 1
15
-
16
- def is_full (self ) -> bool :
17
- return self ._pointer == self ._length - 1
13
+ return self ._head is None
18
14
19
15
def push (self , item ):
20
- if self .is_full ():
21
- raise Exception ("Stack is full" )
22
- self ._pointer += 1
23
- self ._stack [self ._pointer ] = item
16
+ self ._head = Node (item , self ._head )
17
+ self ._count += 1
24
18
25
19
def pop (self ):
26
20
if self .is_empty ():
27
21
raise Exception ("Stack is empty" )
28
- ret_value = self ._stack [self ._pointer ]
29
- self ._pointer -= 1
22
+ ret_value = self ._head .key
23
+ self ._head = self ._head .next
24
+ self ._count -= 1
30
25
return ret_value
31
26
32
27
def peek (self ):
33
28
if self .is_empty ():
34
29
raise Exception ("Stack is empty" )
35
- return self ._stack [ self . _pointer ]
30
+ return self ._head . key
36
31
37
32
def size (self ) -> int :
38
- return len (self ._stack )
33
+ return len (self ._count )
39
34
40
35
41
36
def reverse_string (s : str ) -> str :
42
- stack : Stack = Stack (len ( s ) )
37
+ stack : Stack = Stack ()
43
38
for character in s :
44
39
stack .push (character )
45
40
You can’t perform that action at this time.
0 commit comments