Skip to content

Commit 71726f4

Browse files
committed
Reverse Linked List using Iterative and Recursion method
1 parent 36e45a0 commit 71726f4

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

Linked List/reverse_linked_list.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
# Reverse Linked List using Iterative and Recursion
2+
class Node:
3+
def __init__(self, data, next = None):
4+
self.data = data
5+
self.next = next
6+
7+
class LinkedList:
8+
def __init__(self) -> None:
9+
self.head = None
10+
11+
def addNode(self, data):
12+
node = Node(data)
13+
if self.head is None:
14+
self.head = node
15+
else:
16+
current = self.head
17+
while current.next is not None:
18+
current = current.next
19+
current.next = node
20+
21+
def display(self):
22+
print("Print items")
23+
current = self.head
24+
while current:
25+
print(current.data)
26+
current=current.next
27+
28+
# Iterative Method
29+
def reverseLinkedList(self):
30+
current = self.head
31+
previous = None
32+
33+
while current:
34+
next = current.next
35+
current.next = previous
36+
previous = current
37+
current = next
38+
39+
self.head = previous
40+
41+
# Recursion Method
42+
def reverseLinkedListRecursively(self, currentNode, prev):
43+
current = currentNode
44+
next = current.next
45+
current.next = prev
46+
if (next is None):
47+
self.head = current
48+
return
49+
50+
return self.reverseLinkedListRecursively(next, current)
51+
52+
53+
54+
obj = LinkedList()
55+
obj.addNode(1)
56+
obj.addNode(2)
57+
obj.addNode(3)
58+
obj.addNode(4)
59+
obj.addNode(5)
60+
obj.display()
61+
obj.reverseLinkedList()
62+
obj.display()
63+
obj.reverseLinkedListRecursively(obj.head, None)
64+
obj.display()

0 commit comments

Comments
 (0)