Skip to content

Commit 81e6279

Browse files
committed
added DoublyLinkedList.py code
1 parent ef1baca commit 81e6279

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

DoublyLinkedList.py

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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))

0 commit comments

Comments
 (0)