Advertisement
Waliul

Linked List

Feb 16th, 2020
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.05 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class node
  5. {
  6. public:
  7.     int info;
  8.     node *link;
  9. };
  10.  
  11. node *head = NULL, *tmp = NULL;
  12.  
  13. void creation()
  14. {
  15.     node *ptr = new node();
  16.     int item;
  17.     cin>>item;
  18.     ptr->info = item;
  19.     ptr->link = NULL;
  20.     if(head == NULL)
  21.     {
  22.         head = ptr;
  23.         tmp = ptr;
  24.     }
  25.     else
  26.     {
  27.         tmp->link = ptr;
  28.         tmp = ptr;
  29.     }
  30. }
  31.  
  32. void traverse()
  33. {
  34.     cout<<"The items in the list : ";
  35.     node *srt;
  36.     for(srt = head; ; )
  37.     {
  38.         if(srt->link != NULL)
  39.         {
  40.             cout<<srt->info<<" ";
  41.             srt = srt->link;
  42.         }
  43.         else
  44.         {
  45.             cout<<srt->info;
  46.             break;
  47.         }
  48.     }
  49.     cout<<endl<<endl;
  50. }
  51.  
  52. void first_insert()
  53. {
  54.     cout<<"Enter the item you want to inesrt : ";
  55.     int item;
  56.     cin>>item;
  57.     node *ptr = new node();
  58.     ptr->info = item;
  59.     ptr->link = head;
  60.     head = ptr;
  61. }
  62.  
  63. void last_insert()
  64. {
  65.     cout<<"Enter the item you want to inesrt : ";
  66.     int item;
  67.     cin>>item;
  68.     node *ptr = new node();
  69.     ptr->info = item;
  70.     ptr->link = NULL;
  71.     node *srt;
  72.     for(srt = head; ; )
  73.     {
  74.         if(srt->link == NULL)
  75.         {
  76.             srt->link = ptr;
  77.             break;
  78.         }
  79.         else
  80.         {
  81.             srt = srt->link;
  82.         }
  83.     }
  84. }
  85.  
  86. void before_insert()
  87. {
  88.     cout<<"Enter the 'before' value : ";
  89.     int s_item;
  90.     cin>>s_item;
  91.     node *srt, *tmp;
  92.     for(srt = head; ; )
  93.     {
  94.         if(srt->info == s_item)
  95.         {
  96.             if(srt == head)
  97.             {
  98.                 first_insert();
  99.                 break;
  100.             }
  101.             else
  102.             {
  103.                 cout<<"Enter the item you want to inesrt : ";
  104.                 int item;
  105.                 cin>>item;
  106.                 node *ptr = new node();
  107.                 ptr->info = item;
  108.                 ptr->link = NULL;
  109.                 tmp->link = ptr;
  110.                 ptr->link = srt;
  111.                 break;
  112.             }
  113.         }
  114.         else
  115.         {
  116.             tmp = srt;
  117.             srt = srt->link;
  118.         }
  119.         if(srt == NULL)
  120.         {
  121.             cout<<"'before' value not found."<<endl;
  122.             break;
  123.         }
  124.     }
  125. }
  126.  
  127. void after_insert()
  128. {
  129.     cout<<"Enter the 'after' value : ";
  130.     int s_item;
  131.     cin>>s_item;
  132.     node *srt, *tmp;
  133.     for(srt = head; ; )
  134.     {
  135.         if(srt->info == s_item)
  136.         {
  137.             if(srt->link == NULL)
  138.             {
  139.                 last_insert();
  140.                 break;
  141.             }
  142.             else
  143.             {
  144.                 cout<<"Enter the item you want to inesrt : ";
  145.                 int item;
  146.                 cin>>item;
  147.                 node *ptr = new node();
  148.                 ptr->info = item;
  149.                 ptr->link = srt->link;
  150.                 srt->link = ptr;
  151.                 break;
  152.             }
  153.         }
  154.         else
  155.         {
  156.             tmp = srt;
  157.             srt = srt->link;
  158.         }
  159.         if(srt == NULL)
  160.         {
  161.             cout<<"'before' value not found."<<endl;
  162.             break;
  163.         }
  164.     }
  165. }
  166.  
  167. int main()
  168. {
  169.     int i, n;
  170.     cout<<"How many items you want to enter for creation : ";
  171.     cin>>n;
  172.     cout<<"Enter the items : ";
  173.     for(i = 0; i < n; i++)
  174.     {
  175.         creation();
  176.     }
  177.     traverse();
  178.     while(1)
  179.     {
  180.         int x;
  181.         cout<<"Enter 1 for first insert \n Enter 2 for last insert \n Enter 3 for before insert \n Enter 4 for after insert  : ";
  182.         cin>>x;
  183.         cout<<endl;
  184.         if(x == 1)
  185.         {
  186.             first_insert();
  187.             traverse();
  188.         }
  189.         else if(x == 2)
  190.         {
  191.             last_insert();
  192.             traverse();
  193.         }
  194.         else if(x == 3)
  195.         {
  196.             before_insert();
  197.             traverse();
  198.         }
  199.         else if(x == 4)
  200.         {
  201.             after_insert();
  202.             traverse();
  203.         }
  204.         else
  205.         {
  206.             cout<<"Please enter a number between 1 to 4 "<<endl;
  207.         }
  208.     }
  209.     return 0;
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement