Lecture 1 (Learning)¶
Implment Stack using arrays¶
create a stack class that has
- push() : insert the element on top of stack
- pop() : remove the element from the top
- top() : return the top most element
- size(): return the total number of elements in the stack
In [ ]:
class Stack:
def __init__(self):
self.elements = []
def push(self,element):
self.elements.append(element)
def pop(self):
if not self.elements:
return None
return self.elements.pop()
def top(self):
if not self.elements:
return None
return self.elements[-1]
def size(self):
return len(self.elements)
[1, 2] 2 1 1
Implement Queue using array¶
Example:
Input: push(4) push(14) push(24) push(34) top() size() pop()
Output:
The element pushed is 4 The element pushed is 14 The element pushed is 24 The element pushed is 34 The peek of the queue before deleting any element 4 The size of the queue before deletion 4 The first element to be deleted 4 The peek of the queue after deleting an element 14 The size of the queue after deleting an element 3
In [ ]:
class Queue:
def __init__(self):
self.elements = []
self.front_idx =0
def is_empty(self):
return self.front_idx >= len(self.elements)
def push(self,element):
self.elements.append(element)
def pop(self):
if self.is_empty():
return None
val = self.elements[self.front_idx]
self.front_idx +=1
return val
def peek(self):
if self.size()==0:
return None
return self.elements[self.front_idx]
def size(self):
return len(self.elements)
The element pushed is 4 The element pushed is 14 The element pushed is 24 The element pushed is 34 The peek of the queue before deleting any element 4 The size of the queue before deletion 4 The first element to be deleted 4 The size of the queue before deletion 3
Approach2 (Built in)¶
In [ ]:
from collections import deque
class Queue:
def __init__(self):
self.elements = deque()
def is_empty(self):
return len(self.elements) ==0
def push(self,element):
self.elements.append(element)
def pop(self):
if self.is_empty():
return None
return self.elements.popleft()
def peek(self):
if self.is_empty():
return None
return self.elements[0]
def size(self):
return len(self.elements)
Implment stack using linked list¶
Following operations can be performed in the stack:
push(): pushes an element at the top of the stack. pop(): removes an element from the top of the stack. size(): returns the size of the stack. isEmpty(): returns a boolean value for whether the stack is empty or not. peek()/top(): returns the top element of the stack.
In [ ]:
class Node:
def __init__(self,val=0,next=None):
self.val = val
self.next = next
class Stack:
def __init__(self):
self.head = None
self.size =0
def push(self,element):
new_node = Node(element)
new_node.next = self.head
self.head = new_node
self.size +=1
def pop(self):
if self.isEmpty():
return None
temp = self.head
self.head = self.head.next
val = temp.val
del temp
self.size -=1
return val
def size(self):
return self.size
def isEmpty(self):
return self.head is None
def peek(self):
if self.isEmpty():
return None
return self.head.val