@@ -3,18 +3,6 @@ def __init__(self, data=None):
3
3
self .data = data
4
4
self .next_node = None
5
5
6
- def getData (self ):
7
- return self .data
8
-
9
- def setData (self , data ):
10
- self .data = data
11
-
12
- def getNextNode (self ):
13
- return self .next_node
14
-
15
- def setNextNode (self , new_next ):
16
- self .next_node = new_next
17
-
18
6
class LinkedList :
19
7
def __init__ (self , head = None ):
20
8
self .head = head
@@ -23,44 +11,74 @@ def isEmpty(self):
23
11
return self .head == None
24
12
25
13
def insert (self , data ):
26
- temp = Node (data )
27
- temp .setNextNode (self .head )
14
+ # create a temp node
15
+ temp = Node (data = data )
16
+ # point new node to head
17
+ temp .next_node = self .head
18
+ # set the head as new node
28
19
self .head = temp
29
20
21
+ def insert_after (self , prev , data ):
22
+ if prev is None :
23
+ raise ValueError ("Given node is not found..." )
24
+ return prev
25
+
26
+ # create a temp node
27
+ temp = Node (data = data )
28
+ # set next node of temp to the next node of previous
29
+ temp .next_node = prev .next_node
30
+ # set next node of previous to point temp
31
+ prev .next_node = temp
32
+
30
33
def size (self ):
34
+ # start with the head
31
35
current = self .head
32
36
count = 0
37
+
38
+ # loop unless current is not None
33
39
while current :
34
40
count += 1
35
- current . getNextNode ()
41
+ current = current . next_node
36
42
return count
37
43
38
44
def search (self , data ):
45
+ # start with the head
39
46
current = self .head
40
47
found = False
48
+
49
+ # loop unless current is not None
41
50
while current and not found :
42
- if current .getData () == data :
51
+ # if found, change flag and return data
52
+ if current .data == data :
43
53
found = True
44
54
else :
45
- current = current .getNextNode ()
55
+ # change current to next node
56
+ current = current .next_node
46
57
if current is None :
58
+ # raise Exception if not found
47
59
raise ValueError ("Data is not in the list" )
48
60
return current
49
61
50
62
def delete (self , data ):
63
+ # start with the head
51
64
current = self .head
52
65
previous = None
53
66
found = False
67
+
68
+ # loop unless current is not None
54
69
while current and not found :
70
+ # if found, change flag
55
71
if current .getData () == data :
56
72
found = True
57
73
else :
58
74
previous = current
59
- current = current .getNextNode ()
75
+ current = current .next_node
76
+
60
77
if current is None :
78
+ # raise Exception if not found
61
79
raise ValueError ("Data is not in the list" )
62
80
if previous is None :
63
- self .head = current .getNextNode ()
81
+ self .head = current .next_node
64
82
else :
65
- previous .setNextNode ( current .getNextNode ())
83
+ previous .next_node = current .next_node
66
84
0 commit comments