File tree 2 files changed +91
-1
lines changed
2 files changed +91
-1
lines changed Original file line number Diff line number Diff line change
1
+ // Skip M nodes and delete N nodes from a linked list alternately
2
+
3
+ #include < iostream>
4
+
5
+ using namespace std ;
6
+
7
+ class Node {
8
+ public:
9
+ int data;
10
+ Node* next;
11
+
12
+ Node () {
13
+ this ->next = NULL ;
14
+ }
15
+
16
+ Node (int data) {
17
+ this ->data = data;
18
+ this ->next = NULL ;
19
+ }
20
+ };
21
+
22
+ class LinkedList {
23
+ public:
24
+ Node* head = NULL ;
25
+
26
+ void insert_at_beg (int data){
27
+ Node* temp = new Node (data);
28
+ temp->next = this ->head ;
29
+ this ->head = temp;
30
+ }
31
+
32
+ void print_data (){
33
+ Node* itr = this ->head ;
34
+
35
+ while (itr != NULL ){
36
+ cout << itr->data << " " ;
37
+ itr = itr->next ;
38
+ }
39
+ cout << endl;
40
+ }
41
+ };
42
+
43
+ void skip_m_delete_n (LinkedList* ll, int m, int n){
44
+ Node *curr = ll->head , *del_ptr, *temp;
45
+
46
+ while (curr != NULL ){
47
+ // Skip M nodes, reach to the mth node
48
+ for (int i=0 ; i < m-1 && curr != NULL ; i++){
49
+ curr = curr->next ;
50
+ }
51
+ if (curr == NULL ) return ;
52
+
53
+ del_ptr = curr->next ;
54
+
55
+ // Delete N nodes, reach to the node and replace pointers
56
+ for (int i=0 ; i < n && del_ptr != NULL ; i++){
57
+ temp = del_ptr;
58
+ del_ptr = del_ptr->next ;
59
+ free (temp);
60
+ }
61
+
62
+ curr->next = del_ptr;
63
+ curr = curr->next ;
64
+ }
65
+ }
66
+
67
+ int main () {
68
+ LinkedList* ll = new LinkedList ();
69
+
70
+ // Create Linked list
71
+ ll->insert_at_beg (8 );
72
+ ll->insert_at_beg (7 );
73
+ ll->insert_at_beg (6 );
74
+ ll->insert_at_beg (5 );
75
+ ll->insert_at_beg (4 );
76
+ ll->insert_at_beg (3 );
77
+ ll->insert_at_beg (2 );
78
+ ll->insert_at_beg (1 );
79
+
80
+ cout << " Linked list before removal: " << endl;
81
+ ll->print_data ();
82
+ int k = 3 ;
83
+ int m = 2 , n = 3 ;
84
+ skip_m_delete_n (ll, m, n);
85
+ cout << " Linked list after skip " << m << " delete " << n << " : " << endl;
86
+ ll->print_data ();
87
+ return 0 ;
88
+ }
89
+
90
+
Original file line number Diff line number Diff line change @@ -108,7 +108,7 @@ Contains implementation of Linked List data structure and some common questions
108
108
| Reverse a linked list | [ py] ( LinkedList/ReverseSLL.py ) | [ cpp] ( LinkedList/ReverseSLL.cpp ) |
109
109
| Bring even valued nodes to the front | [ py] ( LinkedList/SegregateEvenOdd.py ) | [ -] ( LinkedList/SegregateEvenOdd.cpp ) |
110
110
| Implementation of Singly Linked List | [ py] ( LinkedList/SinglyLinkedList.py ) | [ cpp] ( LinkedList/SinglyLinkedList.cpp ) |
111
- | Skip M nodes and then delete N nodes alternately | [ py] ( LinkedList/SkipMDeleteN.py ) | [ - ] ( LinkedList/SkipMDeleteN.cpp ) |
111
+ | Skip M nodes and then delete N nodes alternately | [ py] ( LinkedList/SkipMDeleteN.py ) | [ cpp ] ( LinkedList/SkipMDeleteN.cpp ) |
112
112
113
113
------------------------------------------------------------------------------
114
114
### Mathematics
You can’t perform that action at this time.
0 commit comments