Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit cc2069a

Browse files
added reverseLinkedList
1 parent ad5b89b commit cc2069a

File tree

1 file changed

+143
-0
lines changed

1 file changed

+143
-0
lines changed

‎LinkedList/ReverseLinkedList.py‎

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# Reverse the given linkedlist
2+
3+
4+
def reverse_iterative(self):
5+
prev = None
6+
cur = self.head
7+
while cur:
8+
next_node = cur.next
9+
cur.next = prev
10+
prev = cur
11+
cur = cur.next
12+
13+
self.head = prev
14+
15+
16+
class Node:
17+
def __init__(self, data):
18+
self.data = data
19+
self.next = None
20+
21+
22+
class LinkedList:
23+
def __init__(self):
24+
self.head = None
25+
26+
def print_list(self):
27+
cur_node = self.head
28+
while cur_node:
29+
print(cur_node.data)
30+
cur_node = cur_node.next
31+
32+
def append(self, data):
33+
new_node = Node(data)
34+
35+
if self.head is None:
36+
self.head = new_node
37+
return
38+
39+
last_node = self.head
40+
while last_node.next:
41+
last_node = last_node.next
42+
last_node.next = new_node
43+
44+
def prepend(self, data):
45+
new_node = Node(data)
46+
47+
new_node.next = self.head
48+
self.head = new_node
49+
50+
def insert_after_node(self, prev_node, data):
51+
52+
if not prev_node:
53+
print("Previous node does not exist.")
54+
return
55+
56+
new_node = Node(data)
57+
58+
new_node.next = prev_node.next
59+
prev_node.next = new_node
60+
61+
def delete_node(self, key):
62+
63+
cur_node = self.head
64+
65+
if cur_node and cur_node.data == key:
66+
self.head = cur_node.next
67+
cur_node = None
68+
return
69+
70+
prev = None
71+
while cur_node and cur_node.data != key:
72+
prev = cur_node
73+
cur_node = cur_node.next
74+
75+
if cur_node is None:
76+
return
77+
78+
prev.next = cur_node.next
79+
cur_node = None
80+
81+
def delete_node_at_pos(self, pos):
82+
if self.head:
83+
cur_node = self.head
84+
85+
if pos == 0:
86+
self.head = cur_node.next
87+
cur_node = None
88+
return
89+
90+
prev = None
91+
count = 1
92+
while cur_node and count != pos:
93+
prev = cur_node
94+
cur_node = cur_node.next
95+
count += 1
96+
97+
if cur_node is None:
98+
return
99+
100+
prev.next = cur_node.next
101+
cur_node = None
102+
103+
def len_iterative(self):
104+
105+
count = 0
106+
cur_node = self.head
107+
108+
while cur_node:
109+
count += 1
110+
cur_node = cur_node.next
111+
return count
112+
113+
def len_recursive(self, node):
114+
if node is None:
115+
return 0
116+
return 1 + self.len_recursive(node.next)
117+
118+
def print_helper(self, node, name):
119+
if node is None:
120+
print(name + ": None")
121+
else:
122+
print(name + ":" + node.data)
123+
124+
def reverse_iterative(self):
125+
126+
prev = None
127+
cur = self.head
128+
while cur:
129+
nxt = cur.next
130+
cur.next = prev
131+
prev = cur
132+
cur = nxt
133+
self.head = prev
134+
135+
llist = LinkedList()
136+
llist.append("A")
137+
llist.append("B")
138+
llist.append("C")
139+
llist.append("D")
140+
141+
llist.reverse_iterative()
142+
143+
llist.print_list()

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /