File tree 1 file changed +103
-0
lines changed
1 file changed +103
-0
lines changed Original file line number Diff line number Diff line change
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 ()
You can’t perform that action at this time.
0 commit comments