diff --git a/linked_list.py b/linked_list.py new file mode 100644 index 0000000..7efef24 --- /dev/null +++ b/linked_list.py @@ -0,0 +1,41 @@ +class Node: + def __init__(self, data): + self.data = data + self.next = None + +class LinkedList: + def __init__(self): + self.head = None + + def append(self, data): + new_node = Node(data) + if self.head is None: + self.head = new_node + else: + current = self.head + while current.next: + current = current.next + current.next = new_node + + def find_max(self) -> int: + if self.head is None: + return None + + max_value = self.head.data + current = self.head.next + + while current: + if current.data > max_value: + max_value = current.data + current = current.next + + return max_value + + +ll = LinkedList() +ll.append(3) +ll.append(1) +ll.append(4) +ll.append(2) +ll.append(5) +print(ll.find_max()) diff --git a/queue.py b/queue.py new file mode 100644 index 0000000..8c3ae51 --- /dev/null +++ b/queue.py @@ -0,0 +1,23 @@ +class QueueWithStacks: + def __init__(self): + self.stack_in = [] + self.stack_out = [] + + def enqueue(self, x: int): + + self.stack_in.append(x) + + def dequeue(self) -> int: + if not self.stack_out: + + while self.stack_in: + self.stack_out.append(self.stack_in.pop()) + + return self.stack_out.pop() if self.stack_out else None + + +q = QueueWithStacks() +q.enqueue(1) +q.enqueue(2) +print(q.dequeue()) +print(q.dequeue()) diff --git a/rev_string.py b/rev_string.py new file mode 100644 index 0000000..371dd55 --- /dev/null +++ b/rev_string.py @@ -0,0 +1,14 @@ +def reverse_string(s: str) -> str: + stack = [] + + for char in s: + stack.append(char) + + + reversed_str = '' + while stack: + reversed_str += stack.pop() + + return reversed_str + +print(reverse_string("Itumeleng"))