Skip to content

Commit ab3dea2

Browse files
committed
Reverse every k nodes of a linked list: 1st commit
1 parent 98340fd commit ab3dea2

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

linkedlist/ReverseEveryKNodes.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
/************************************************************************
2+
* @author SAGAR PAUL (paulsagar1a)
3+
* @category Linked list
4+
*
5+
* Reverse every k nodes of a linked list
6+
* Given a linked list and a number k. Reverse every k nodes in the list.
7+
* Example : Input 1->2->3->4->5->6 and k = 2 Output 2->1->4->3->6->5
8+
************************************************************************/
9+
package linkedlist;
10+
11+
public class ReverseEveryKNodes {
12+
public Node head;
13+
public static class Node {
14+
int data;
15+
Node next;
16+
public Node(int data) {
17+
this.data = data;
18+
}
19+
}
20+
public void addNode(Node node) {
21+
if(head == null) {
22+
head = node;
23+
} else {
24+
Node temp = head;
25+
while(temp.next != null) {
26+
temp = temp.next;
27+
}
28+
temp.next = node;
29+
}
30+
}
31+
32+
public void print() {
33+
Node temp = head;
34+
while(temp != null) {
35+
System.out.println(temp.data);
36+
temp = temp.next;
37+
}
38+
}
39+
40+
public void reverseEveryKNodes(int k) {
41+
head = reverseKNodes(head, k);
42+
}
43+
44+
public Node reverseKNodes(Node head, int k) {
45+
int i = 0;
46+
Node current = head;
47+
Node next = null, previous = null;
48+
while(current != null && i<k) {
49+
next = current.next;
50+
current.next = previous;
51+
previous = current;
52+
current = next;
53+
i++;
54+
}
55+
if(next != null)
56+
head.next = reverseKNodes(next, k);
57+
return previous;
58+
}
59+
60+
public static void main(String[] args) {
61+
// TODO Auto-generated method stub
62+
ReverseEveryKNodes obj = new ReverseEveryKNodes();
63+
obj.addNode(new Node(1));
64+
obj.addNode(new Node(2));
65+
obj.addNode(new Node(3));
66+
obj.addNode(new Node(4));
67+
obj.addNode(new Node(5));
68+
obj.addNode(new Node(6));
69+
obj.addNode(new Node(7));
70+
obj.addNode(new Node(8));
71+
System.out.println("----------Before----------");
72+
obj.print();
73+
obj.reverseEveryKNodes(3);
74+
System.out.println("----------After----------");
75+
obj.print();
76+
}
77+
78+
}

0 commit comments

Comments
 (0)