Skip to content

Commit 9c990b7

Browse files
committed
remove duplicate in doubly linked list
1 parent 3681501 commit 9c990b7

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed

remove_duplicates_doubly.py

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
class Node:
2+
def __init__(self, data):
3+
self.data = data
4+
self.prev = None
5+
self.next = None
6+
7+
8+
class DoublyLinkedList:
9+
def __init__(self):
10+
self.head = None
11+
12+
def printList(self):
13+
temp = self.head
14+
while temp:
15+
print(temp.data)
16+
temp = temp.next
17+
18+
def append(self, data):
19+
if not self.head:
20+
self.head = Node(data)
21+
return
22+
curr = self.head
23+
new_node = Node(data)
24+
while curr.next:
25+
curr = curr.next
26+
curr.next = new_node
27+
new_node.prev = curr
28+
new_node.next = None
29+
return
30+
31+
def prepend(self, data):
32+
if not self.head:
33+
self.head = Node(data)
34+
return
35+
curr = self.head
36+
new_node = Node(data)
37+
if curr:
38+
new_node.next = curr
39+
curr.prev = new_node
40+
self.head = new_node
41+
return
42+
43+
def delete_node(self, node):
44+
curr = self.head
45+
while curr:
46+
if curr == node and curr == self.head:
47+
if not curr.next:
48+
curr = None
49+
self.head = None
50+
return
51+
else:
52+
nxt = curr.next
53+
self.head = nxt
54+
nxt.prev = None
55+
curr.next = None
56+
curr = None
57+
return
58+
elif curr == node:
59+
if curr.next is not None:
60+
prev = curr.prev
61+
nxt = curr.next
62+
prev.next = nxt
63+
nxt.prev = prev
64+
curr.next = None
65+
curr.prev = None
66+
curr = None
67+
return
68+
else:
69+
prev = curr.prev
70+
prev.next = None
71+
curr.prev = None
72+
curr = None
73+
return
74+
75+
curr = curr.next
76+
77+
def delete_Duplicates(self):
78+
curr = self.head
79+
dup_values = dict()
80+
while curr:
81+
if curr.data not in dup_values:
82+
dup_values[curr.data] = 1
83+
curr = curr.next
84+
85+
else:
86+
nxt = curr.next
87+
self.delete_node(curr)
88+
curr = nxt
89+
90+
91+
d1 = DoublyLinkedList()
92+
d1.append(100)
93+
d1.append(200)
94+
d1.append(200)
95+
d1.append(300)
96+
d1.append(500)
97+
d1.append(100)
98+
d1.append(400)
99+
d1.append(500)
100+
101+
102+
d1.delete_Duplicates()
103+
d1.printList()

0 commit comments

Comments
 (0)