Skip to content

Commit d31accb

Browse files
committed
Questions
1 parent c09953e commit d31accb

File tree

2 files changed

+74
-13
lines changed

2 files changed

+74
-13
lines changed
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
1-
// we will be writing a code for reversing a linked list
2-
#include <iostream>
1+
#include<iostream>
32
using namespace std;
43
struct Node{
54
int data;
6-
Node* next;
7-
Node(int val): data(val),next(nullptr) {}
5+
Node * next;
6+
Node(int val): data(val), next(nullptr){}
87
};
9-
Node* reverseLinked(Node * head){
8+
Node * reverseLinkedList(Node * head){
109
Node * curr = head;
1110
Node * prev = nullptr;
1211
while(curr != nullptr){
13-
Node * next = curr->next;
12+
Node *next = curr->next;
1413
curr->next = prev;
1514
prev = curr;
1615
curr = next;
1716
}
1817
return prev;
1918
}
20-
void printLinkedList(Node *head){
19+
void printList(Node * head){
2120
while(head){
2221
cout << head->data << " ";
2322
head = head->next;
@@ -30,10 +29,11 @@ int main(){
3029
head->next->next = new Node(3);
3130
head->next->next->next = new Node(4);
3231
head->next->next->next->next = new Node(5);
33-
cout << "Original Linked List: ";
34-
printLinkedList(head);
35-
head = reverseLinked(head);
36-
cout << "Reversed Linked List: ";
37-
printLinkedList(head);
32+
head->next->next->next->next->next = new Node(6);
33+
cout << "Original Linked List: " << endl;
34+
printList(head);
35+
head = reverseLinkedList(head);
36+
cout << "Reversed Linked List: " << endl;
37+
printList(head);
3838
return 0;
39-
}
39+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// C++ Program to reverse the nodes of a linked list in k groups
2+
// Leetcode number: 25 (Asked by Microsoft, Amazon, Facebook, etc.)
3+
#include<iostream>
4+
using namespace std;
5+
struct ListNode {
6+
int data;
7+
ListNode *next;
8+
ListNode(int val) : data(val),next(nullptr) {}
9+
};
10+
int getLength(ListNode *head, int k){
11+
int count = 0;
12+
while(head != NULL){
13+
count++;
14+
head = head->next;
15+
}
16+
return count ;
17+
}
18+
ListNode* reverseKGroup(ListNode* head, int k){
19+
if(head == NULL){
20+
return NULL;
21+
}
22+
int length = getLength(head, k);
23+
if(length < k){
24+
return head;
25+
}
26+
ListNode* prev = NULL;
27+
ListNode* curr = head;
28+
ListNode* forward = NULL;
29+
int count = 0;
30+
while(curr != NULL && count < k){
31+
forward = curr->next;
32+
curr->next = prev;
33+
prev = curr;
34+
curr = forward;
35+
count++;
36+
}
37+
head->next = reverseKGroup(forward,k);
38+
return prev;
39+
}
40+
void printList(ListNode* head){
41+
while(head){
42+
cout << head->data <<" ";
43+
head = head->next;
44+
}
45+
cout << endl;
46+
}
47+
int main(){
48+
ListNode * head = new ListNode(1);
49+
head->next = new ListNode(2);
50+
head->next->next = new ListNode(3);
51+
head->next->next->next = new ListNode(4);
52+
head->next->next->next->next = new ListNode(5);
53+
head->next->next->next->next->next = new ListNode(6);
54+
cout << "Original Linked List: " << endl;
55+
printList(head);
56+
int k = 3;
57+
head = reverseKGroup(head, k);
58+
cout << "Reversed Linked List in K Groups: " << endl;
59+
printList(head);
60+
return 0;
61+
}

0 commit comments

Comments
 (0)