Skip to content

Commit 4b90515

Browse files
committed
Added doubly linkedlist with python
1 parent 4f9d4fb commit 4b90515

File tree

1 file changed

+173
-0
lines changed

1 file changed

+173
-0
lines changed
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
# Class for creating Node
2+
class Node:
3+
def __init__(self, data=None, next=None, prev=None):
4+
self.data = data
5+
self.next = next
6+
self.prev = prev
7+
8+
# Double linkedlist area
9+
10+
11+
class DLinkedList:
12+
# initializind head
13+
def __init__(self):
14+
self.head = None
15+
16+
# insertion at start
17+
def addbeg(self, data):
18+
if self.head == None:
19+
node = Node(data, self.head, None)
20+
self.head = node
21+
else:
22+
node = Node(data, self.head, None)
23+
self.head.prev = node
24+
self.head = node
25+
26+
# printing the list
27+
def prinnt(self):
28+
if self.head is None:
29+
print('empty')
30+
return
31+
temp = self.head
32+
st = ''
33+
while temp:
34+
st += '<-' + str(temp.data) + '->'
35+
temp = temp.next
36+
print(st)
37+
38+
# insertion at end
39+
def addend(self, data):
40+
if self.head is None:
41+
self.head = Node(data, None, None)
42+
else:
43+
temp = self.head
44+
while temp.next:
45+
temp = temp.next
46+
node = Node(data, None, temp)
47+
temp.next = node
48+
49+
#printing in forward
50+
def pforward(self):
51+
if self.head is None:
52+
print('empty')
53+
return
54+
temp = self.head
55+
st = ''
56+
while temp:
57+
st += str(temp.data) + '->'
58+
temp = temp.next
59+
print(st)
60+
61+
# Finding the length of linkedlist
62+
def lenn(self):
63+
if self.head is None:
64+
print('empty')
65+
return
66+
count = 0
67+
temp = self.head
68+
while temp:
69+
count += 1
70+
temp = temp.next
71+
return count
72+
73+
# finding last node
74+
def lastnode(self):
75+
temp = self.head
76+
while temp.next:
77+
temp = temp.next
78+
return temp
79+
80+
# Inserting element at linkedlist with index
81+
def addmid(self, index, data):
82+
if index < 0 or index >= self.lenn():
83+
print('Invalid index')
84+
return
85+
86+
if index == 0:
87+
self.addbeg(data)
88+
return
89+
90+
if index == self.lenn() - 1:
91+
self.addend(data)
92+
return
93+
94+
temp = self.head
95+
count = 0
96+
while temp:
97+
if count == index - 1:
98+
node = Node(data, temp.next, temp)
99+
temp.next.prev = node
100+
temp.next = node
101+
break
102+
temp = temp.next
103+
count += 1
104+
105+
#print in reverse
106+
def pbackward(self):
107+
if self.head is None:
108+
print('empty')
109+
return
110+
temp = self.lastnode()
111+
st = ''
112+
while temp:
113+
st += '<-' + str(temp.data)
114+
temp = temp.prev
115+
print(st)
116+
117+
# removing element at linkedlist with index
118+
def remove(self, index):
119+
120+
if index < 0 or index >= self.lenn():
121+
print('Invalid index')
122+
return
123+
if index == 0:
124+
self.head = self.head.next
125+
self.head.prev.next = None
126+
self.head.prev = None
127+
return
128+
129+
if index == self.lenn() - 1:
130+
temp = self.head
131+
while temp.next:
132+
temp = temp.next
133+
temp.prev.next = None
134+
temp.prev = None
135+
return
136+
137+
temp = self.head
138+
count = 0
139+
while temp:
140+
if count == index:
141+
temp.prev.next = temp.next
142+
temp.next.prev = temp.prev
143+
temp.prev = None
144+
temp.next = None
145+
146+
temp = temp.next
147+
count += 1
148+
149+
150+
if __name__ == '__main__':
151+
li = DLinkedList()
152+
a = int(input('Enter the value to insert at beg: '))
153+
li.addbeg(a)
154+
b = int(input('Enter the value to insert at beg: '))
155+
li.addbeg(b)
156+
c = int(input('Enter the value to insert at end: '))
157+
li.addend(c)
158+
d = int(input('Enter the value to insert at end: '))
159+
li.addend(d)
160+
li.prinnt()
161+
print("Priting in forward: ", end="")
162+
li.pforward()
163+
print('Printing in backward: ', end="")
164+
li.pbackward()
165+
print('Len of linked list is ', end='')
166+
li.lenn()
167+
e = int(input('Enter the index to be removed: '))
168+
li.remove(e)
169+
li.prinnt()
170+
f = int(input('Enter the index: '))
171+
g = int(input('Enter the number: '))
172+
li.addmid(f, g)
173+
li.prinnt()

0 commit comments

Comments
 (0)