Niloy007

Sabuj's Problem

Apr 11th, 2021
747
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // #define NULL 0
  5.  
  6. struct ListNode {
  7.     int data;
  8.     struct ListNode* next;
  9. };
  10.  
  11. typedef struct ListNode LN;
  12.  
  13. LN* head;
  14.  
  15. void init() {
  16.     head = NULL;
  17. }
  18.  
  19. void print_list() {
  20.     LN* temp = head;
  21.     while(temp != NULL) {
  22.         printf("%d ", temp->data);
  23.         temp = temp->next;
  24.     }
  25.     printf("\n");
  26. }
  27.  
  28. LN* search(int key) {
  29.     LN* temp = head;
  30.     while(temp != NULL) {
  31.         if(temp->data == key) {
  32.             return temp;
  33.         }
  34.         temp = temp->next;
  35.     }
  36.     return NULL;
  37. }
  38.  
  39. void insert_first(int item) {
  40.     LN* new_node = (LN*)malloc(sizeof(LN));
  41.     new_node->data = item;
  42.     new_node->next = head;
  43.     head = new_node;
  44. }
  45.  
  46. void delete_first() {
  47.     if(head == NULL)
  48.         return;
  49.     LN* temp = head;
  50.     head = head->next;
  51.     free(temp);
  52. }
  53.  
  54. void insert_last(int item) {
  55.     if(head == NULL) {
  56.         insert_first(item);
  57.         return;
  58.     }
  59.     LN* new_node = (LN*)malloc(sizeof(LN));
  60.     new_node->data=item;
  61.     new_node->next= NULL;
  62.     LN* temp= head;
  63.     while(temp->next != NULL){
  64.         temp=temp->next;
  65.     }
  66.     temp->next=new_node;\
  67. }
  68.  
  69. void delete_last() {
  70.     LN* temp = head;
  71.     if(head==NULL)
  72.     {
  73.         printf("Empty list \n");
  74.         return;
  75.     }
  76.     if(head->next==NULL)
  77.     {
  78.         delete_first();
  79.         return;
  80.     }
  81.     while(temp->next->next != NULL)
  82.     {
  83.         temp = temp->next;
  84.     }
  85.     free(temp->next);
  86.     temp->next=NULL;
  87. }
  88.  
  89. void insert_after(int olditem, int newitem) {
  90.  
  91.     LN* new_node = (LN*)malloc(sizeof(LN));
  92.     new_node->data=newitem;
  93.  
  94.     LN* temp= search(olditem);
  95.  
  96.     if(temp==NULL)
  97.     {
  98.         printf("Item not found \n");
  99.         return;
  100.     }
  101.     new_node->next=temp->next;
  102.     temp->next=new_node;
  103.     // write your code here
  104. }
  105.  
  106. void delete_after(int olditem) {
  107.     LN* temp = head;
  108.     while(temp != NULL) {
  109.         if(temp->data == olditem) {
  110.             break;
  111.         }
  112.         temp = temp->next;
  113.     }
  114.     if(temp==NULL)
  115.     {
  116.         printf("Item not found \n");
  117.         return;
  118.     }
  119.     LN* node = temp->next;
  120.     if(temp->next==NULL)
  121.     {
  122.         printf("Item in Last node \n");
  123.         return;
  124.     }
  125.  
  126.     temp->next=temp->next->next;
  127.     free(node);
  128. }
  129.  
  130. void delete_item(int item) {
  131.     LN* temp;
  132.     temp=head;
  133.     if(temp==NULL)
  134.     {
  135.         printf("Empty list \n");
  136.         return;
  137.     }
  138.     if(temp->data == item)
  139.     {
  140.         delete_first();
  141.         return;
  142.     }
  143.  
  144.     if(search(item)==NULL)
  145.     {
  146.         printf("NOT FOUND \n");
  147.         return;
  148.     }
  149.  
  150.  
  151.     while(temp->next != NULL) {
  152.         if(temp->next->data == item) {
  153.             LN* node = temp->next;
  154.             temp->next = temp->next->next;
  155.             free(node);
  156.             return;
  157.         }
  158.         temp = temp->next;
  159.     }
  160. }
  161.  
  162. int main() {
  163.     init();
  164.     insert_first(2);
  165.     insert_first(5);
  166.     insert_first(7);
  167.     insert_first(3);
  168.     insert_first(13);
  169.     insert_first(9);
  170.     insert_first(11);
  171.     print_list();
  172.     delete_after(1);
  173.     print_list();
  174.  
  175.     // delete_first();
  176.     // print_list();
  177.     // delete_first();
  178.     // print_list();
  179.     // delete_first();
  180.     // print_list();
  181.     // delete_first();
  182.     // print_list();
  183.     // delete_first();
  184.     // print_list();
  185.     // delete_first();
  186.     // print_list();
  187.     // delete_first();
  188.     // print_list();
  189.  
  190.  
  191.  
  192.  
  193.     return 0;
  194. }
  195.  
  196.  
RAW Paste Data