Skip to content

Commit a17da3d

Browse files
committed
Add 8 new programs
1 parent 09f644f commit a17da3d

File tree

8 files changed

+260
-0
lines changed

8 files changed

+260
-0
lines changed

binary_search_tree.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Node:
2+
def __init__(self, val):
3+
self.value = val
4+
self.left = None
5+
self.right = None
6+
7+
def binsert(root, data):
8+
if root is None:
9+
return Node(data)
10+
11+
if data < root.value:
12+
root.left = binsert(root.left, data)
13+
elif data > root.value:
14+
root.right = binsert(root.right, data)
15+
else:
16+
print(f"{data} already exists")
17+
return root
18+
19+
def inorder(root):
20+
if root:
21+
inorder(root.left)
22+
print(root.value, end=" ")
23+
inorder(root.right)
24+
25+
b = Node(100)
26+
print("Root Node:",b.value)
27+
binsert(b, 30)
28+
binsert(b, 3)
29+
binsert(b, 200)
30+
binsert(b, 10)
31+
print("Inorder of Traversal of the tree:")
32+
inorder(b)

insertion_sort.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def insertionsort(arr):
2+
3+
for i in range(1,len(arr)):
4+
temp = arr[i]
5+
j = i - 1
6+
7+
while (j >= 0 and temp < arr[j]):
8+
arr[j+1] = arr[j]
9+
j -=1
10+
11+
arr[j+1] = temp
12+
13+
14+
array = [8, 2, 7, 10, 9, 1, 0]
15+
print("Array before sorting:\n", array)
16+
17+
insertionsort(array)
18+
print("Array after sorting:\n",array)

linear_search.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
def linearsearch(lst, x):
2+
3+
for i in range(len(lst)):
4+
if lst[i] == x:
5+
return f'Element {x} found at index {i}'
6+
7+
return 'Element not found in the list.'
8+
9+
list_in = list(map(int, input("Enter integers seperated by space: ").split()))
10+
x = int(input("Enter X: "))
11+
12+
print(list_in)
13+
print(linearsearch(list_in, x))

linked_list.py

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
class Node:
2+
def __init__(self, data):
3+
self.data = data
4+
self.ref = None
5+
6+
7+
class LinkedList:
8+
def __init__(self):
9+
self.head = None
10+
11+
def add_begin(self, data):
12+
new_node = Node(data)
13+
new_node.ref = self.head
14+
self.head = new_node
15+
16+
def add_end(self, data):
17+
new_node = Node(data)
18+
if self.head is None:
19+
self.head = new_node
20+
else:
21+
n = self.head
22+
while n.ref is not None:
23+
n = n.ref
24+
n.ref = new_node
25+
26+
def add_after(self, after, data):
27+
n = self.head
28+
29+
while n is not None:
30+
if n.data == after:
31+
break
32+
else:
33+
n = n.ref
34+
35+
if n is None:
36+
print("Node is not present in Linked List")
37+
else:
38+
new_node = Node(data)
39+
new_node.ref = n.ref
40+
n.ref = new_node
41+
42+
def printl2(self):
43+
if self.head is None:
44+
print("Linked List is empty")
45+
46+
else:
47+
n = self.head
48+
while n is not None:
49+
print(n.data, '-->', end = ' ')
50+
n = n.ref
51+
52+
def del_begin(self):
53+
if self.head is None:
54+
print("delete operation is not possible")
55+
else:
56+
self.head = self.head.ref
57+
58+
def del_end(self):
59+
if self.head is None:
60+
print("delete operation is not possible")
61+
else:
62+
n = self.head
63+
while n.ref.ref is not None:
64+
n = n.ref
65+
n.ref = None
66+
67+
def del_node(self, node):
68+
if self.head == None:
69+
print("deletion operation is not possibe")
70+
elif self.head.data == node:
71+
self.del_begin()
72+
else:
73+
n = self.head
74+
while n.ref is not None:
75+
if n.ref.data == node:
76+
break
77+
else:
78+
n = n.ref
79+
80+
if n.ref is None:
81+
print("Can't delete a node that doesn't exist")
82+
else:
83+
n.ref = n.ref.ref
84+
85+
86+
l = LinkedList()
87+
l.add_begin(10)
88+
l.add_begin(5)
89+
l.add_begin(1)
90+
l.add_end(15)
91+
l.add_after(5, 12)
92+
l.add_after(10, 0)
93+
l.printl2()
94+
print("")
95+
l.del_begin()
96+
l.del_end()
97+
l.del_node(12)
98+
l.printl2()

postfixeval.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
class Stack:
2+
3+
def __init__(self):
4+
self.stack = []
5+
6+
def push(self, val):
7+
self.stack.append(val)
8+
9+
def pop_(self):
10+
if not self.stack:
11+
return
12+
else:
13+
return self.stack.pop()
14+
15+
def posteval(expression):
16+
stk = Stack()
17+
for i in expression:
18+
if i.isdigit():
19+
stk.push(i)
20+
else:
21+
a = int(stk.pop_())
22+
b = int(stk.pop_())
23+
if i == '^':
24+
temp = f'{b}**{a}'
25+
stk.push(str(eval(temp)))
26+
else:
27+
temp = f'{b}{i}{a}'
28+
stk.push(eval(temp))
29+
return stk.stack[0]
30+
31+
postfix = input("Enter postfix expression: ")
32+
print(posteval(postfix))

queue.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from collections import deque
2+
queue = deque()
3+
4+
def enqueue():
5+
x = input("Enter an element: ")
6+
queue.append(x)
7+
print(list(queue))
8+
9+
def dq():
10+
if not queue:
11+
print("Can't perform pop on empty queue.")
12+
else:
13+
print("Popped element: ", queue.popleft())
14+
print(list(queue))
15+
16+
while True:
17+
ch = int(input("1.enqueue, 2. dequeue, 3. quit \nEnter: "))
18+
if ch == 1:
19+
enqueue()
20+
elif ch == 2:
21+
dq()
22+
elif ch == 3:
23+
break
24+
else:
25+
print("Invalid operation!")

selection_sort.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
def selectionsort(arr):
2+
3+
for i in range(len(arr)):
4+
minimum = i
5+
6+
for j in range(i+1, len(arr)):
7+
if arr[j] < arr[minimum]:
8+
minimum = j
9+
10+
arr[i], arr[minimum] = arr[minimum], arr[i]
11+
12+
13+
array = [99, 10, 29, 90, 100, 38, 2938, 23, 498]
14+
print("Array before sorting:\n", array)
15+
selectionsort(array)
16+
print("Array after sorting:\n",array)
17+
18+

stack.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
stack = []
2+
3+
def push():
4+
x = input("Enter an element: ")
5+
stack.append(x)
6+
print(stack)
7+
8+
def pop_():
9+
if not stack:
10+
print("Can't perform pop on empty stack.")
11+
else:
12+
print("Popped element ", stack.pop())
13+
print(stack)
14+
15+
while True:
16+
ch = int(input("1.push, 2. pop, 3. quit \nEnter: "))
17+
if ch == 1:
18+
push()
19+
elif ch == 2:
20+
pop_()
21+
elif ch == 3:
22+
break
23+
else:
24+
print("Invalid operation!")

0 commit comments

Comments
 (0)