Advertisement
Imran_Mohammed

Linked_List

Jan 17th, 2023 (edited)
724
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.70 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. class node{
  5.     public:
  6.         int data;
  7.         node * next;
  8. };
  9.  
  10. class linkedList{
  11.     public :
  12.      node *head;
  13.  
  14.     linkedList(){
  15.         head = NULL;
  16.     }
  17.  
  18.     node* createNewNode(int value){
  19.         node *newNode = new node;
  20.         newNode -> data = value;
  21.         newNode -> next = NULL;
  22.         return newNode;
  23.     }
  24.  
  25.     void insertAtHead(int value){
  26.         node *a = createNewNode(value);
  27.  
  28.         if(head == NULL){
  29.             head = a;
  30.             return;
  31.         }
  32.  
  33.         else{
  34.             a -> next = head;
  35.             head = a;
  36.         }
  37.     }
  38.  
  39.     void insertAtAnyPos(int index , int value){
  40.         if(index == 0){
  41.             insertAtHead(value);
  42.             return;
  43.         }
  44.  
  45.         node *a = head;
  46.         int cur_index=0;
  47.         while(cur_index != index-1){
  48.             a = a->next;
  49.             cur_index++;
  50.         }
  51.  
  52.         node *newNode = createNewNode(value);
  53.         newNode ->next = a -> next;
  54.         a -> next = newNode;
  55.     }
  56.  
  57.     void inserAfterValue(int target , int value){
  58.         node *a = head;
  59.         int c = 0;
  60.         while(a != NULL){
  61.             if(a->data == target){
  62.                 break;
  63.             }
  64.             a = a->next;
  65.             node *newNode = createNewNode(value);
  66.             newNode -> next = a -> next;
  67.             a -> next = newNode;
  68.         }
  69.         if( a == NULL){
  70.             cout << "This value not Found!" << endl;
  71.         }
  72.     }
  73.  
  74.     void deleteFromHead(){
  75.         if(head == NULL){
  76.             return;
  77.         }
  78.         node *a = head;
  79.         head = a -> next;
  80.     }
  81.  
  82.     void deleteFromIndex(int index){
  83.         if(index == 0){
  84.             deleteFromHead();
  85.             return;
  86.         }
  87.  
  88.         int cur_index = 0;
  89.         node *a = head;
  90.         while(cur_index != index-1){
  91.            a = a-> next;
  92.            cur_index++;
  93.         }
  94.         node *b = a->next;
  95.         a->next = b->next;
  96.     }
  97.  
  98.    void removeLast(){
  99.         node *a = head;
  100.         if( a== NULL){
  101.             cout << "empty List"<< endl;
  102.             return;
  103.         }
  104.         while(a ->next ->next != NULL){
  105.             a = a->next;
  106.         }
  107.         a->next = NULL;
  108.     }
  109.  
  110.  
  111.     void traverse(){
  112.  
  113.         if(head == NULL){
  114.             cout << "Linked List is empty" << endl;
  115.         }
  116.  
  117.         else{
  118.             node *temp = head;
  119.             while(temp != NULL){
  120.                 cout << temp -> data << " ";
  121.                 temp = temp -> next;
  122.             }
  123.             cout << endl;
  124.         }
  125.     }
  126.  
  127.     int searchValue(int value){
  128.        if(head == NULL){
  129.             cout << "Linked List is empty" << endl;
  130.         }
  131.  
  132.         else{
  133.             node *temp = head;
  134.             int c=0;
  135.             while(temp != NULL){
  136.                 if(temp -> data == value){
  137.                     return c+1;
  138.                 }
  139.                 else {
  140.                     c++;
  141.                     temp = temp -> next;
  142.                 }
  143.             }
  144.         }
  145.         return -1;
  146.     }
  147.  
  148.     int getValue(int index){
  149.  
  150.             node *temp = head;
  151.             int c=0;
  152.             while(temp != NULL){
  153.                 if(index == c){
  154.                     return temp->data;
  155.                 }
  156.                 else {
  157.                     c++;
  158.                     temp = temp -> next;
  159.                 }
  160.             }
  161.         return -1;
  162.     }
  163.  
  164.     int getSize(){
  165.         int c = 0;
  166.         if(head == NULL){
  167.             return c;
  168.         }
  169.  
  170.         else{
  171.  
  172.             node *temp = head;
  173.             while(temp != NULL){
  174.                 c++;
  175.                 temp = temp->next;
  176.             }
  177.  
  178.             return c;
  179.         }
  180.  
  181.     }
  182.  
  183.     void printReverse(node *a){
  184.         if(a == NULL){
  185.             return;
  186.         }
  187.         printReverse(a -> next);
  188.         cout << a->data << " ";
  189.     }
  190.  
  191.     void printReverse1(){
  192.         printReverse(head);
  193.     }
  194.  
  195. };
  196.  
  197. int main(){
  198.  
  199.     linkedList l;
  200.  
  201.     l.insertAtHead(5);
  202.     l.insertAtHead(2);
  203.     l.insertAtHead(10);
  204.     l.insertAtHead(7);
  205.  
  206.     cout << "size =  " << l.getSize() << endl;
  207.     cout << "Linked List :";
  208.     l.traverse();
  209.  
  210.     l.insertAtAnyPos(2 , 20);
  211.     cout << "New size = " << l.getSize() << endl;
  212.     cout << "Linked List :";
  213.     l.traverse();
  214.  
  215.     cout << "value at index 2 : "<< l.getValue(2) << endl;
  216.  
  217.     l.deleteFromHead();
  218.     cout << "After delete from head : ";
  219.     l.traverse();
  220.  
  221.     l.deleteFromIndex(2);
  222.     cout << "After delete from index 2 : ";
  223.     l.traverse();
  224.  
  225.     l.inserAfterValue(5 , 15);
  226.     cout << "insert after value ";
  227.     l.traverse();
  228.  
  229.     cout << "Reverse linked List : ";
  230.     l.printReverse1();
  231.  
  232.     return 0;
  233. }
  234.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement