diff --git a/Exercise_1.py b/Exercise_1.py index 532833f5d..1e831fcfb 100644 --- a/Exercise_1.py +++ b/Exercise_1.py @@ -2,19 +2,28 @@ class myStack: #Please read sample.java file before starting. #Kindly include Time and Space complexity at top of each file def __init__(self): - + self.stack = [] def isEmpty(self): - + if len(self.stack)==0: + return True + else: + return False + def push(self, item): - + self.stack.append(item) def pop(self): - + if len(self.stack)!=0: + self.stack.pop() def peek(self): - + if len(self.stack)!=0: + return self.stack[-1] + return [] def size(self): + return len(self.stack) def show(self): + return self.stack s = myStack() diff --git a/Exercise_2.py b/Exercise_2.py index b11492215..7c67a4739 100644 --- a/Exercise_2.py +++ b/Exercise_2.py @@ -6,10 +6,18 @@ def __init__(self, data): class Stack: def __init__(self): - + self.pointer = None def push(self, data): - + node = Node(data) + node.next = self.pointer + self.pointer = node def pop(self): + if self.pointer is None: + print("Stack Empty") + else: + data = self.pointer.data + self.pointer = self.pointer.next + return data a_stack = Stack() while True: diff --git a/Exercise_3.py b/Exercise_3.py index a5d466b59..2dad2f611 100644 --- a/Exercise_3.py +++ b/Exercise_3.py @@ -3,6 +3,8 @@ class ListNode: A node in a singly-linked list. """ def __init__(self, data=None, next=None): + self.data =data + self.next = next class SinglyLinkedList: def __init__(self): @@ -17,6 +19,17 @@ def append(self, data): Insert a new element at the end of the list. Takes O(n) time. """ + node = ListNode(data=data) + if self.head is None: + self.head = node + return + current = self.head + while current.next: + current = current.next + + current.next = node + + def find(self, key): """ @@ -24,9 +37,34 @@ def find(self, key): `key`. Return the element or `None` if not found. Takes O(n) time. """ - + + current = self.head + while current.next: + if current.data ==key: + return current + current = current.next + return None def remove(self, key): """ Remove the first occurrence of `key` in the list. Takes O(n) time. """ + + current = self.head + previous = None + + if current is None: + print("List Empty") + return + + while current: + if current.data == key: + if previous: + previous.next = current.next + else: + self.head = current.next + return + else: + previous = current + current = current.next +