File tree Expand file tree Collapse file tree 1 file changed +94
-0
lines changed
Python/Data-Structures/Doubly Linked List Expand file tree Collapse file tree 1 file changed +94
-0
lines changed Original file line number Diff line number Diff line change 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 ()
You can’t perform that action at this time.
0 commit comments