Advertisement
Josif_tepe

Untitled

Mar 27th, 2025
391
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.47 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node {
  5.     int info;
  6.     node * next;
  7. };
  8.  
  9. struct SLL {
  10.     node * head;
  11.    
  12.     void init() {
  13.         head = NULL;
  14.     }
  15.    
  16.     void insertFront(int x) {
  17.         node * new_node = new node;
  18.         new_node->info = x;
  19.        
  20.         if(head == NULL) {
  21.             head = new_node;
  22.         }
  23.         else {
  24.             new_node->next = head;
  25.             head = new_node;
  26.         }
  27.        
  28.     }
  29.    
  30.     void insertEnd(int x) {
  31.         node * new_node = new node;
  32.         new_node->info = x;
  33.        
  34.         if(head == NULL) {
  35.             head = new_node;
  36.         }
  37.         else {
  38.             node * tmp = head;
  39.             while(tmp->next != NULL) {
  40.                 tmp = tmp->next;
  41.             }
  42.             tmp->next = new_node;
  43.         }
  44.     }
  45.    
  46.     void deleteFront() {
  47.         if(head != NULL) {
  48.             if(head->next == NULL) {
  49.                 delete head;
  50.                 head = NULL;
  51.             }
  52.             else {
  53.                 node * tmp = head;
  54.                 head = head->next;
  55.                 delete tmp;
  56.             }
  57.         }
  58.     }
  59.    
  60.     void deleteEnd() {
  61.         if(head != NULL) {
  62.             if(head->next == NULL) {
  63.                 delete head;
  64.                 head = NULL;
  65.             }
  66.             else {
  67.                 node * tmp = head;
  68.                 while(tmp->next->next != NULL) {
  69.                     tmp = tmp->next;
  70.                 }
  71.                 delete tmp->next;
  72.                 tmp->next = NULL;
  73.             }
  74.         }
  75.     }
  76.    
  77.     void deleteNode(int x) {
  78.         if(head != NULL) {
  79.             if(head->info == x) {
  80.                 deleteFront();
  81.             }
  82.             else {
  83.                 node * tmp = head;
  84.                 node * prev = NULL;
  85.                 while(tmp->info != x and tmp != NULL) {
  86.                     prev = tmp;
  87.                     tmp = tmp->next;
  88.                 }
  89.                
  90.                 if(tmp != NULL) {
  91.                     prev->next = tmp->next;
  92.                     delete tmp;
  93.                 }
  94.             }
  95.         }
  96.     }
  97.    
  98.     void deleteNode(node * x) {
  99.         if(head != NULL) {
  100.             if(head == x) {
  101.                 deleteFront();
  102.             }
  103.             else {
  104.                 node * tmp = head;
  105.                 node * prev = NULL;
  106.                 while(tmp != x and tmp != NULL) {
  107.                     prev = tmp;
  108.                     tmp = tmp->next;
  109.                 }
  110.                
  111.                 if(tmp != NULL) {
  112.                     prev->next = tmp->next;
  113.                     delete tmp;
  114.                 }
  115.             }
  116.         }
  117.     }
  118.    
  119.     void deleteAll() {
  120.         while(head != NULL) {
  121.             deleteEnd();
  122.         }
  123.     }
  124.    
  125.     void print() {
  126.         node * tmp = head;
  127.        
  128.         while(tmp != NULL) {
  129.             cout << tmp->info << "-->";
  130.             tmp = tmp->next;
  131.         }
  132.         cout << endl;
  133.     }
  134. };
  135. int main() {
  136.    
  137.     SLL sll;
  138.     sll.init();
  139.    
  140.     sll.insertFront(1);
  141.     sll.insertFront(2);
  142.     sll.insertFront(3);
  143.    
  144.        
  145.     sll.insertEnd(4);
  146.     sll.insertEnd(5);
  147.     sll.insertEnd(6);
  148.     sll.print();
  149.    
  150.     sll.deleteNode(2);
  151.     sll.print();
  152.    
  153.     sll.deleteNode(6);
  154.     sll.print();
  155.    
  156.     node * to_delete = sll.head->next;
  157.     sll.deleteNode(to_delete);
  158.    
  159.     sll.print();
  160.    
  161.     sll.deleteAll();
  162.    
  163.    
  164.  
  165. return 0;
  166.    
  167. }
  168.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement