Skip to content

Commit df08b32

Browse files
authored
Merge pull request #431 from aakankshabhende/linked-list-python
Python-singly-linked-list-all-operations
2 parents 0cd3e69 + 69ccd6a commit df08b32

File tree

1 file changed

+100
-0
lines changed

1 file changed

+100
-0
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
# A pythom program for all operations performed on singly linked-list.
2+
# Time-Complexity = O(n)
3+
# Space-Complexity = O(n)
4+
class Node:
5+
def __init__(self, data=None, next=None): # Creation of Node
6+
self.data = data
7+
self.next = next
8+
9+
class LinkedList:
10+
def __init__(self):
11+
self.head = None # head points the first node
12+
13+
def print(self):
14+
if self.head is None:
15+
print("Linked list is empty")
16+
return
17+
itr = self.head
18+
llstr = '' # empty string
19+
while itr:
20+
llstr += str(itr.data)+' --> ' if itr.next else str(itr.data)
21+
itr = itr.next
22+
print(llstr)
23+
24+
def length(self): # will calculate length of the linked list
25+
count = 0
26+
itr = self.head
27+
while itr:
28+
count += 1
29+
itr = itr.next
30+
31+
return count
32+
33+
def insert_at_begining(self, data):
34+
node = Node(data, self.head) # Creating a new node calling Node method
35+
self.head = node
36+
37+
def insert_at_end(self, data):
38+
if self.head is None:
39+
self.head = Node(data, None)
40+
return
41+
42+
itr = self.head
43+
44+
while itr.next:
45+
itr = itr.next
46+
47+
itr.next = Node(data, None)
48+
49+
def insert_at(self, index, data):
50+
if index < 0 or index > self.length():
51+
raise Exception("Invalid Index")
52+
53+
if index == 0:
54+
self.insert_at_begining(data)
55+
return
56+
57+
count = 0
58+
itr = self.head
59+
while itr:
60+
if count == index - 1:
61+
node = Node(data, itr.next)
62+
itr.next = node
63+
break
64+
65+
itr = itr.next
66+
count += 1
67+
68+
def remove_at(self, index):
69+
if index < 0 or index >= self.length():
70+
raise Exception("Invalid Index")
71+
72+
if index == 0:
73+
self.head = self.head.next
74+
return
75+
76+
count = 0
77+
itr = self.head
78+
while itr:
79+
if count == index - 1:
80+
itr.next = itr.next.next # to delete the specified node
81+
break
82+
83+
itr = itr.next
84+
count += 1
85+
86+
def insert_values(self, data_list):
87+
self.head = None
88+
for data in data_list:
89+
self.insert_at_end(data)
90+
91+
92+
if __name__ == '__main__':
93+
node1 = LinkedList()
94+
node1.insert_values(["python","C++","C","Java"])
95+
node1.insert_at(1,"Javascript")
96+
node1.remove_at(2)
97+
node1.print()
98+
node1.insert_values([45,7,12,567,99])
99+
node1.insert_at_end(67)
100+
node1.print()

0 commit comments

Comments
 (0)