Full Singly Link List

  1. #include<iostream>
  2. using namespace std;
  3. struct node
  4. {
  5.     int data;
  6.     struct node *next;
  7. };

  8. void insrt(node *s, int data)
  9. {
  10.     while(s->next != NULL)
  11.     {
  12.         s = s->next;
  13.     }
  14.     s->next = (node*) malloc(sizeof(node));
  15.     s->next -> data = data;
  16.     s->next ->next = NULL;
  17. }

  18. void insrtF(node *s, int data)
  19. {
  20.     node *t = s->next;
  21.     s->next = (node*) malloc(sizeof(node));
  22.     s->next->data = data;
  23.     s->next->next = t;
  24. }

  25. void insrtAfter(node *s, int srch,  int data)
  26. {
  27.     while(s->next != NULL)
  28.     {
  29.         if(s->next->data == srch)
  30.         {
  31.             node *str = s->next->next;
  32.             s->next ->next = (node*) malloc(sizeof(node));
  33.             s->next->next->data = data;
  34.             s->next->next->next = str;
  35.             break;
  36.         }
  37.         s = s->next;
  38.     }
  39. }

  40. void srch(node *s, int data)
  41. {
  42.     int c = 0;
  43.     while(s ->next != NULL)
  44.     {
  45.         if(s->next ->data == data)
  46.         {
  47.             c++;
  48.         }
  49.         s = s->next;
  50.     }
  51.     cout << data << " Found " << c << " Times." << endl << endl;
  52. }

  53. void deleteIndivisual(node *s, int data)
  54. {
  55.     int c= 0;
  56.     while(s->next != NULL)
  57.     {
  58.         if(s->next->data == data)
  59.         {
  60.             s->next = s->next->next;
  61.             c = 1;
  62.             break;
  63.         }
  64.         s = s->next;
  65.     }
  66.     if(c == 1)
  67.     {
  68.         cout << data << " Successfully Deleted." << endl << endl;
  69.     }
  70.     else
  71.     {
  72.         cout << data << " is not Found." << endl << endl;
  73.     }
  74. }

  75. void deleteF(node *s)
  76. {
  77.     s->next = s->next->next;
  78. }

  79. void deleteL(node *s)
  80. {
  81.     while(s->next != NULL)
  82.     {
  83.         if(s->next->next == NULL)
  84.         {
  85.             s->next = NULL;
  86.             break;
  87.         }
  88.         s = s->next;
  89.     }
  90. }

  91. void display(node *s)
  92. {
  93.     while(s->next != NULL)
  94.     {
  95.         cout << s->next->data << endl;
  96.         s = s->next;
  97.     }
  98.     cout << endl;
  99. }

  100. void countnode(node *s)
  101. {
  102.     int c = 0;
  103.     while(s->next != NULL)
  104.     {
  105.         c++;
  106.         s = s->next;
  107.     }
  108.     cout << "Total " << c << " Node Found." << endl << endl;
  109. }

  110. int main()
  111. {
  112.     node *h = (node*) malloc(sizeof(node));
  113.     h ->data = INT_MAX;
  114.     h->next = NULL;

  115.     insrt(h,1);
  116.     insrt(h,2);
  117.     insrt(h,3);
  118.     insrt(h,4);
  119.     insrt(h,5);

  120.     insrtF(h, 99);

  121.     insrtAfter(h, 3, 10);

  122.     srch(h, 5);

  123.     display(h);

  124.     deleteIndivisual(h, 4);

  125.     deleteL(h);

  126.     display(h);

  127.     countnode(h);
  128.     return 0;
  129. }

Comments