File tree 2 files changed +88
-51
lines changed
2 files changed +88
-51
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 .next = None
5
+
6
+
7
+ class LinkedList :
8
+ def __init__ (self ):
9
+ self .head = None
10
+ self .tail = None
11
+ self .size = 0
12
+
13
+ def get (self , index ):
14
+ if index < 0 or index >= self .size :
15
+ return - 1
16
+
17
+ curr = self .head
18
+
19
+ while index != 0 :
20
+ curr = curr .next
21
+ index -= 1
22
+
23
+ return curr .data
24
+
25
+ def addAtHead (self , key ):
26
+ new_node = Node (key )
27
+ if not self .head :
28
+ self .head = new_node
29
+ self .tail = new_node
30
+ else :
31
+ new_node .next = self .head
32
+ self .head = new_node
33
+ self .size += 1
34
+
35
+ def addAtTail (self , key ):
36
+ new_node = Node (key )
37
+ if not self .head :
38
+ self .head = new_node
39
+ self .tail = new_node
40
+ else :
41
+ self .tail .next = new_node
42
+
43
+ self .size += 1
44
+
45
+ def addAtIndex (self , index , key ):
46
+ if index < 0 or index > self .size :
47
+ return - 1
48
+ new_node = Node (key )
49
+ if index == 0 :
50
+ self .addAtHead (key )
51
+ elif index == self .size - 1 :
52
+ self .addAtTail (key )
53
+ else :
54
+ curr = self .head
55
+ while index - 1 != 0 : # here we keep track on index - 1 so that we can add after that element
56
+ curr = curr .next
57
+ index -= 1
58
+ curr .next = new_node
59
+ new_node .next = curr .next
60
+ self .size += 1
61
+
62
+ def deleteAtIndex (self , index ):
63
+ if index < 0 or index >= self .size :
64
+ return - 1
65
+ curr = self .head
66
+ if index == 0 :
67
+ self .head = curr .next
68
+ elif index == self .size - 1 :
69
+ while index - 1 != 0 :
70
+ curr = curr .next
71
+ curr .next = 0
72
+ self .tail = curr
73
+ else :
74
+ while index != 0 :
75
+ prev = curr
76
+ curr = curr .next
77
+ index -= 1
78
+ prev .next = curr .next
79
+ self .size -= 1
80
+
81
+
82
+
83
+ myLinkedList = LinkedList ()
84
+ myLinkedList .addAtIndex (0 , 200 )
85
+ myLinkedList .addAtIndex (1 , 300 )
86
+ myLinkedList .addAtIndex (2 , 400 )
87
+ myLinkedList .deleteAtIndex (1 )
88
+ print (myLinkedList .get (1 ))
Load Diff This file was deleted.
You can’t perform that action at this time.
0 commit comments