Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * author: raghuvanshraj
- * created: 23.06.2021 02:41:21 PM
- **/
- #include <bits/stdc++.h>
- using namespace std;
- class linked_list_node_t {
- public:
- int data;
- linked_list_node_t *next;
- linked_list_node_t(int data) {
- this->data = data;
- this->next = nullptr;
- }
- };
- linked_list_node_t* insert_node(linked_list_node_t *head, int pos, int data) {
- linked_list_node_t *prev = nullptr;
- linked_list_node_t *curr = head;
- while (pos--) {
- prev = curr;
- curr = curr->next;
- }
- linked_list_node_t *new_node = new linked_list_node_t(data);
- new_node->next = curr;
- if (prev != nullptr) {
- prev->next = new_node;
- } else {
- return new_node;
- }
- return head;
- }
- linked_list_node_t* delete_node(linked_list_node_t *head, int pos) {
- linked_list_node_t *prev = nullptr;
- linked_list_node_t *curr = head;
- while (pos--) {
- prev = curr;
- curr = curr->next;
- }
- if (prev != nullptr) {
- prev->next = curr->next;
- } else {
- linked_list_node_t *new_head = curr->next;
- delete curr;
- return new_head;
- }
- delete curr;
- return head;
- }
- void print_linked_list(linked_list_node_t *head) {
- linked_list_node_t *curr = head;
- while (curr != nullptr) {
- cout << curr->data << ' ';
- curr = curr->next;
- }
- cout << endl;
- }
- int main(int argc, char const *argv[]) {
- linked_list_node_t *head = nullptr;
- int T;
- cin >> T;
- while (T--) {
- char t;
- int pos, x;
- cin >> t;
- switch (t) {
- case 'i':
- cin >> pos >> x;
- head = insert_node(head, pos, x);
- break;
- case 'd':
- cin >> pos;
- head = delete_node(head, pos);
- break;
- }
- print_linked_list(head);
- }
- delete head;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement