-
Notifications
You must be signed in to change notification settings - Fork 0
/
ReverseLinkedLisr.py
108 lines (78 loc) · 2.31 KB
/
ReverseLinkedLisr.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
from Node import *;
class LinkedList():
def __init__ (self):
self.__head = None;
self.__size = 0;
def getHead(self):
return self.__head;
def setHead(self,head):
self.__head = head;
def isEmpty(self):
if (self.__head == None):
return 1;
def size(self):
return self.__size;
def insertFirst(self, num):
# curr = Node.Node(num);
curr = Node(num);
curr.setNext(self.__head);
self.__head = curr;
self.__size += 1;
def insertLast(self, num):
if(self.isEmpty()):
self.insertFirst(num);
else:
curr = self.__head;
while(curr.getNext() != None):
curr = curr.getNext();
newNode = Node(num);
newNode.setNext(None);
curr.setNext(newNode);
def printList(self):
if (self.isEmpty()):
print "Linked List is Empty";
return;
curr = self.__head;
while (curr.getNext() != None):
print "%d - >"%curr.getNum(),;
curr = curr.getNext();
print "%d"%curr.getNum();
# def reverseLinkedList(self):
# curr = self.__head;
# next = None;
# prev = None;
# while (curr != None):
# next = curr.getNext();
# curr.setNext(prev);
# prev = curr;
# curr = next;
# self.__head = prev;
L = LinkedList();
L.insertFirst(5);
L.insertFirst(4);
L.insertFirst(3);
L.insertFirst(2);
L.insertFirst(1);
L.printList();
def reverse(head,tail):
curr = head;
prev = None;
next = None;
while (curr != tail):
next = curr.getNext();
curr.setNext(prev);
prev = curr;
curr = next;
#next = curr.getNext();
curr.setNext(prev);
prev = curr;
#curr = next;
return prev;
def reverseLinkedList(L):
head = L.getHead();
curr = head;
while (curr.getNext() != None):
curr = curr.getNext();
L.setHead(reverse(head, curr));
reverseLinkedList(L);
L.printList();