Skip to content

Commit e853f5e

Browse files
committed
insert in linked list
1 parent bd822ad commit e853f5e

File tree

2 files changed

+88
-51
lines changed

2 files changed

+88
-51
lines changed

insert_linked_list.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
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))

insertion_in_linked_list.py

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)