Skip to content

Commit 40b2c80

Browse files
committed
Stack linked list implementation
1 parent 07a5ade commit 40b2c80

File tree

1 file changed

+14
-19
lines changed

1 file changed

+14
-19
lines changed

stack/stack-linked-list-impl.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,40 @@
11
class Node:
22
def __init__(self, key=None, next=None):
3-
self._key = key
4-
self._next = next
3+
self.key = key
4+
self.next = next
55

66

77
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
1211

1312
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
1814

1915
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
2418

2519
def pop(self):
2620
if self.is_empty():
2721
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
3025
return ret_value
3126

3227
def peek(self):
3328
if self.is_empty():
3429
raise Exception("Stack is empty")
35-
return self._stack[self._pointer]
30+
return self._head.key
3631

3732
def size(self) -> int:
38-
return len(self._stack)
33+
return len(self._count)
3934

4035

4136
def reverse_string(s: str) -> str:
42-
stack: Stack = Stack(len(s))
37+
stack: Stack = Stack()
4338
for character in s:
4439
stack.push(character)
4540

0 commit comments

Comments
 (0)