-
Notifications
You must be signed in to change notification settings - Fork 435
Expand file tree
/
Copy pathRevaLinkListGivenAgROUP.py
More file actions
67 lines (62 loc) · 2.11 KB
/
RevaLinkListGivenAgROUP.py
File metadata and controls
67 lines (62 loc) · 2.11 KB
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
class Node:
def __init__(self,data):
self.data=data
self.next=None
class Linkedlist:
def __init__(self):
self.head=None
def insert(self,newNode):
if self.head is None:
self.head=newNode
else:
lastNode=self.head
while True:
if lastNode.next is None:
break
else:
lastNode=lastNode.next
lastNode.next=newNode
def printlist(self):
currentNode=self.head
while True:
if currentNode is None:
break
else:
print(currentNode.data)
currentNode=currentNode.next
def reverse(self, head, k):
current = head
next = None
prev = None
count = 0
# Reverse first k nodes of the linked list
while (current is not None and count < k):
next = current.next
current.next = prev
prev = current
current = next
count += 1
if next is not None:
head.next = self.reverse(next, k)
# prev is new head of the input list
return prev
if __name__=='__main__' :
llist1=Linkedlist()
firstNode=Node(input("Enter 1st Node Data"))
llist1.insert(firstNode)
secondNode = Node(input("Enter 2nd Node Data"))
llist1.insert(secondNode)
thirdNode = Node(input("Enter 3rd Node Data"))
llist1.insert(thirdNode)
fouthNode = Node(input("Enter 4th Node Data"))
llist1.insert(fouthNode)
fifthNode = Node(input("Enter 5th Node Data"))
llist1.insert(fifthNode)
sixthNode = Node(input("Enter 6th Node Data"))
llist1.insert(sixthNode)
seventhNode = Node(input("Enter 7th Node Data"))
llist1.insert(seventhNode)
k=int(input("Enter value of Key"))
print("given Linked list",llist1.printlist())
llist1.head=llist1.reverse(llist1.head,k)
print("rev Linked list",llist1.printlist())