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 a2444f2

Browse files
committed
day4: python prob 9
1 parent 1720188 commit a2444f2

File tree

2 files changed

+85
-4
lines changed

2 files changed

+85
-4
lines changed

‎README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
| Current Status| Stats |
88
| :------------: | :----------: |
99
| Total C++ Problems | 188 |
10-
| Total Python Problems | 8 |
11-
| Current Daily Streak| 3 |
10+
| Total Python Problems | 9 |
11+
| Current Daily Streak| 4 |
1212
| Last Streak | 06/20/2019 - 06/21/2019|
13-
| Current Streak | 06/23/2019 - 06/25/2019|
13+
| Current Streak | 06/23/2019 - 06/26/2019|
1414

1515
</center>
1616

@@ -22,7 +22,7 @@
2222
| Find the nth node of linked list from last. |[nthToLastNode.cpp](linked_list_problems/nthToLastNode.cpp), [nth_to_last_node.py](linked_list_problems/nth_to_last_node.py) |
2323
| Add numbers where each digit of the number is represented by node of a linkedlist. Give output as a linked list. | [add_two_numbers_lists.cpp](linked_list_problems/add_two_numbers_lists.cpp), [add_two_numbers_list.py](linked_list_problems/add_two_numbers_lists.py)|
2424
| Swap nodes of a linkedlist without swapping data. |[swapNodesWithoutSwappingData.cpp](linked_list_problems/swapNodesWithoutSwappingData.cpp), [swap_nodes_without_swapping_data.py](linked_list_problems/swap_nodes_without_swapping_data.py)|
25-
| Reverse a linked list, iteratively and recursively | [reverseLinkedListIterAndRecurse.cpp](linked_list_problems/reverseLinkedListIterAndRecurse.cpp)|
25+
| Reverse a linked list, iteratively and recursively | [reverseLinkedListIterAndRecurse.cpp](linked_list_problems/reverseLinkedListIterAndRecurse.cpp), [reverse_linkedlist.py](linked_list_problems/reverse_linkedlist.py)|
2626
| Given a linked list, reverse alternate nodes and append at the end. | [reverseAlternateNodes.cpp](linked_list_problems/reverseAlternateNodes.cpp) |
2727
| Only given a node pointer, delete the node from the linked list. | [deleteNode.cpp](linked_list_problems/deleteNode.cpp)|
2828
| Delete the entire linkedlist. | [deleteLinkedlist.cpp](linked_list_problems/deleteLinkedlist.cpp)|
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
"""
2+
Reverse a linked list
3+
"""
4+
5+
class Node:
6+
"""Representation of a linked list node"""
7+
def __init__(self, data):
8+
self.data = data
9+
self.next = None
10+
11+
class LinkedList:
12+
"""Representation of a linked list"""
13+
def __init__(self):
14+
self.head = None
15+
16+
def push(self, data):
17+
"""Pushes a new node with data at the head of the list"""
18+
new_node = Node(data)
19+
new_node.next = self.head
20+
self.head = new_node
21+
22+
def print(self):
23+
"""Prints the linked list"""
24+
itr = self.head
25+
while itr:
26+
if itr.next is None:
27+
print(itr.data)
28+
else:
29+
print(str(itr.data), '-->', end=' ')
30+
itr = itr.next
31+
32+
def _reverse_recur(self, node):
33+
"""Utility function to recursively reverse a list"""
34+
if node is None:
35+
return
36+
37+
if node.next is None:
38+
self.head = node
39+
return
40+
41+
first = node
42+
rest = node.next
43+
self._reverse_recur(rest)
44+
first.next.next = first
45+
first.next = None
46+
47+
def reverse_r(self):
48+
"""Recursively reverses a list"""
49+
self._reverse_recur(self.head)
50+
51+
def reverse_i(self):
52+
"""Iteratively reverses a list"""
53+
if (self.head is None) or \
54+
(self.head and self.head.next is None):
55+
return
56+
57+
prev = None
58+
curr = self.head
59+
new_head = None
60+
while curr:
61+
prev = curr
62+
curr = curr.next
63+
prev.next = new_head
64+
new_head = prev
65+
self.head = new_head
66+
67+
68+
69+
if __name__ == "__main__":
70+
ll = LinkedList()
71+
ll.push(5)
72+
ll.push(4)
73+
ll.push(3)
74+
ll.push(2)
75+
ll.push(1)
76+
ll.print()
77+
78+
ll.reverse_i()
79+
ll.print()
80+
ll.reverse_r()
81+
ll.print()

0 commit comments

Comments
(0)

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