Skip to content

Commit 97ad950

Browse files
committed
graph algo added
1 parent 896b78e commit 97ad950

File tree

3 files changed

+149
-0
lines changed

3 files changed

+149
-0
lines changed

Diff for: Advance-Data-Structure/PYTHON/graph/dfs.py

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""
2+
DFS
3+
4+
TC: O(V+E)
5+
SC: O(V)
6+
"""
7+
8+
9+
def dfs(graph, visited, node):
10+
if node in visited:
11+
return
12+
13+
print(node)
14+
visited.add(node)
15+
for neighbour in graph[node]:
16+
dfs(graph, visited, neighbour)
17+
18+
19+
if __name__ == '__main__':
20+
graph = {
21+
'5': ['3', '7'],
22+
'3': ['2', '4'],
23+
'7': ['8'],
24+
'2': [],
25+
'4': ['8'],
26+
'8': []
27+
}
28+
visited = set()
29+
dfs(graph, visited, '5')

Diff for: Advance-Data-Structure/PYTHON/linked_list.py

+96
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
class Node:
2+
def __init__(self, data=None):
3+
self.data = data
4+
self.next = None
5+
6+
7+
class LinkedList:
8+
def __init__(self):
9+
self.head = None
10+
11+
def insertAtBeginning(self, data):
12+
new_node = Node(data)
13+
new_node.next = self.head
14+
self.head = new_node
15+
16+
def insertAtEnd(self, data):
17+
new_node = Node(data)
18+
19+
if not self.head:
20+
self.head = new_node
21+
return
22+
23+
curr = self.head
24+
while curr.next:
25+
curr = curr.next
26+
27+
curr.next = new_node
28+
29+
def search(self, data):
30+
if not self.head:
31+
print('List is empty!')
32+
33+
curr = self.head
34+
while curr:
35+
if curr.data == data:
36+
return True
37+
curr = curr.next
38+
return False
39+
40+
def deleteNode(self, position):
41+
if not self.head:
42+
return
43+
44+
curr = self.head
45+
46+
if position == 0:
47+
self.head = curr.next
48+
curr = None
49+
return
50+
51+
for i in range(position-1):
52+
curr = curr.next
53+
if not curr:
54+
return
55+
56+
if not curr.next:
57+
return
58+
59+
next_node = curr.next.next
60+
curr.next = None
61+
curr.next = next_node
62+
63+
def printList(self):
64+
if not self.head:
65+
print('List is empty!')
66+
return
67+
68+
curr = self.head
69+
while curr:
70+
print(curr.data, end=' --> ')
71+
curr = curr.next
72+
print()
73+
74+
75+
if __name__ == '__main__':
76+
llist = LinkedList()
77+
print(llist.search(1))
78+
llist.printList()
79+
llist.insertAtBeginning(1)
80+
print(llist.search(1))
81+
print(llist.search(2))
82+
llist.printList()
83+
llist.insertAtBeginning(3)
84+
llist.insertAtBeginning(7)
85+
llist.printList()
86+
llist.insertAtEnd(-1)
87+
llist.insertAtEnd(-17)
88+
llist.printList()
89+
llist.deleteNode(0)
90+
llist.printList()
91+
llist.deleteNode(7)
92+
llist.printList()
93+
llist.deleteNode(2)
94+
llist.printList()
95+
llist.deleteNode(2)
96+
llist.printList()

Diff for: Number-Theory/Python/sieve.py

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import math
2+
3+
MX = 105
4+
5+
6+
def sieve(isPrime):
7+
isPrime[0] = isPrime[1] = False
8+
for i in range(2, int(math.sqrt(MX))):
9+
if isPrime[i]:
10+
for j in range(2*i, MX, i):
11+
isPrime[j] = False
12+
13+
14+
def printPrime(isPrime):
15+
for i in range(MX):
16+
if isPrime[i]:
17+
print(i, end=" ")
18+
print()
19+
20+
21+
if __name__ == '__main__':
22+
isPrime = [True for _ in range(MX)]
23+
sieve(isPrime)
24+
printPrime(isPrime)

0 commit comments

Comments
 (0)