File tree 1 file changed +78
-0
lines changed
1 file changed +78
-0
lines changed Original file line number Diff line number Diff line change
1
+ class Node (object ):
2
+
3
+ def __init__ (self , d , n = None , p = None ):
4
+ self .data = d
5
+ self .next_node = n
6
+ self .prev_node = p
7
+
8
+ def get_next (self ):
9
+ return self .next_node
10
+
11
+ def set_next (self , n ):
12
+ self .next_node = n
13
+
14
+ def get_prev (self ):
15
+ return self .prev_node
16
+
17
+ def set_prev (self , p ):
18
+ self .prev_node = p
19
+
20
+ def get_data (self ):
21
+ return self .data
22
+
23
+ def set_data (self , d ):
24
+ self .data = d
25
+
26
+
27
+ class LinkedList (object ):
28
+
29
+ def __init__ (self , r = None ):
30
+ self .root = r
31
+ self .size = 0
32
+
33
+ def get_size (self ):
34
+ return self .size
35
+
36
+ def add (self , d ):
37
+ new_node = Node (d , self .root )
38
+ if self .root :
39
+ self .root .set_prev (new_node )
40
+ self .root = new_node
41
+ self .size += 1
42
+
43
+ def remove (self , d ):
44
+ this_node = self .root
45
+
46
+ while this_node :
47
+ if this_node .get_data () == d :
48
+ next = this_node .get_next ()
49
+ prev = this_node .get_prev ()
50
+
51
+ if next :
52
+ next .set_prev (prev )
53
+ if prev :
54
+ prev .set_next (next )
55
+ else :
56
+ self .root = this_node
57
+ self .size -= 1
58
+ return True # data removed
59
+ else :
60
+ this_node = this_node .get_next ()
61
+ return False # data not found
62
+
63
+ def find (self , d ):
64
+ this_node = self .root
65
+ while this_node :
66
+ if this_node .get_data () == d :
67
+ return d
68
+ else :
69
+ this_node = this_node .get_next ()
70
+ return None
71
+
72
+ myList = LinkedList ()
73
+ myList .add (5 )
74
+ myList .add (8 )
75
+ myList .add (12 )
76
+ myList .remove (8 )
77
+ print (myList .remove (12 ))
78
+ print (myList .find (5 ))
You can’t perform that action at this time.
0 commit comments