-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdel_kth_elem_linkedlist.cpp
More file actions
83 lines (70 loc) · 1.71 KB
/
del_kth_elem_linkedlist.cpp
File metadata and controls
83 lines (70 loc) · 1.71 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
// Created by Mayank Parasar on 2019-12-18.
//
/*
* You are given a singly linked list and an integer k. Return the linked list,
* removing the k-th last element from the list.
* */
#include <iostream>
#include <vector>
using namespace std;
struct node {
int val;
node* next;
node(int val_, node* node_ = nullptr) {
val = val_;
next = node_;
}
};
void print_linked_list(node* root) {
node* node_ = root;
while(node_ != nullptr) {
cout << node_->val << " ";
node_ = node_->next;
}
cout << endl;
}
node* remove_last_kth_elem(node* root, int k) {
// first calculate the size of link-list
int size = 0;
node* node_ = root;
while (node_ != nullptr) {
node_ = node_->next;
size++;
}
cout << " size: " << size << endl;
// node* nodek = nullptr;
// kth elem from last size-k + 1 from the beginnning
int cntr = 0;
node_ = root;
while(node_ != nullptr) {
cntr++;
if(cntr == (size - k)) {
// next node needs to be deleted
node* tmp_node;
tmp_node = node_->next;
node_->next = node_->next->next;
delete(tmp_node);
break; // deleted
}
node_ = node_->next;
}
return(root);
}
int main() {
node* node1 = new node(1);
node* node2 = new node(2);
node* node3 = new node(3);
node* node4 = new node(4);
node* node5 = new node(5);
node* node6 = new node(6);
node1->next = node2;
node2->next = node3;
node3->next = node4;
node4->next = node5;
node5->next = node6;
print_linked_list(node1);
remove_last_kth_elem(node1, 3);
print_linked_list(node1);
return 0;
}