Skip to content

Commit 3eefc0a

Browse files
authored
Added doubly linked list div-bargali#158
Added doubly linked list div-bargali#158
2 parents e243fa4 + 1938649 commit 3eefc0a

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
class Node:
2+
def __init__(self, data=None, prev=None, next=None):
3+
self.data = data
4+
self.prev = prev
5+
self.next = next
6+
7+
8+
class Doublylist:
9+
def __init__(self):
10+
self.head = None
11+
12+
def insertatbeginning(self, data):
13+
if self.head is None:
14+
node = Node(data)
15+
self.head = node
16+
else:
17+
self.head = Node(data, next=self.head)
18+
19+
def length(self):
20+
itr = self.head
21+
count = 0
22+
while itr:
23+
count += 1
24+
itr = itr.next
25+
return count
26+
27+
def insertatend(self, data):
28+
if self.head is None:
29+
self.insertatbeginning(data)
30+
else:
31+
itr = self.head
32+
while itr.next:
33+
itr = itr.next
34+
itr.next = Node(data, prev=itr)
35+
36+
def print(self):
37+
itr = self.head
38+
istr = ''
39+
while itr:
40+
istr += str(itr.data) + '-->'
41+
itr = itr.next
42+
print(istr)
43+
44+
def insertat(self, data, at):
45+
if at == 0:
46+
self.insertatbeginning(data)
47+
elif at == self.length() - 1:
48+
self.insertatend(data)
49+
else:
50+
itr = self.head
51+
count = 0
52+
while itr:
53+
if count != at - 1:
54+
count += 1
55+
itr = itr.next
56+
else:
57+
break
58+
itr.next = Node(data, itr, itr.next)
59+
60+
def removeval(self,val):
61+
if self.head is None:
62+
raise Exception("invalid list")
63+
if self.head.data is val:
64+
self.head = None
65+
itr1=self.head
66+
itr2=self.head
67+
while itr1.next:
68+
itr1=itr1.next
69+
if itr1.data == val:
70+
itr2.next=itr1.next
71+
itr1.next.prev=itr2
72+
itr2=itr2.next
73+
74+
def insertval(self,datalist):
75+
for i in datalist:
76+
d.insertatend(i)
77+
return
78+
79+
80+
81+
if __name__ == "__main__":
82+
d = Doublylist()
83+
d.insertatbeginning(5)
84+
d.print()
85+
d.insertatbeginning(6)
86+
d.print()
87+
print(d.length())
88+
d.insertatend(20)
89+
d.print()
90+
d.insertat(4, 1)
91+
d.removeval(6)
92+
d.print()
93+
d.removeval(4)
94+
d.print()

0 commit comments

Comments
 (0)