Josif_tepe

Untitled

Sep 4th, 2025
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.94 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 SinglyLinkedList {
  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.         new_node->next = NULL;
  20.        
  21.         if(head == NULL) {
  22.             head = new_node;
  23.         }
  24.         else {
  25.             new_node->next = head;
  26.             head = new_node;
  27.         }
  28.     }
  29.    
  30.    
  31.     void insertBack(int x) {
  32.         node * new_node = new node;
  33.         new_node->info = x;
  34.         new_node->next = NULL;
  35.        
  36.         if(head == NULL) {
  37.             head = new_node;
  38.         }
  39.         else {
  40.             node * tmp = head;
  41.             while(tmp->next != NULL) {
  42.                 tmp = tmp->next;
  43.             }
  44.             tmp->next = new_node;
  45.         }
  46.     }
  47.    
  48.     void insertAfter(int position, int x) {
  49.         node * new_node = new node;
  50.         new_node->info = x;
  51.        
  52.         node *tmp = head;
  53.        
  54.         while(tmp != NULL && position > 0) {
  55.             position--;
  56.             tmp = tmp->next;
  57.         }
  58.        
  59.         if(tmp != NULL) {
  60.             if(tmp->next == NULL) {
  61.                 insertBack(x);
  62.             }
  63.             else {
  64.                 new_node->next = tmp->next;
  65.                 tmp->next = new_node;
  66.             }
  67.         }
  68.        
  69.     }
  70.    
  71.     void deleteFront() {
  72.         if(head != NULL) {
  73.             if(head->next == NULL) {
  74.                 delete head;
  75.                 head = NULL;
  76.             }
  77.             else {
  78.                 node * tmp = head;
  79.                 head = head->next;
  80.                 delete tmp;
  81.             }
  82.         }
  83.     }
  84.    
  85.     void deleteBack() {
  86.         if(head != NULL) {
  87.             if(head->next == NULL) {
  88.                 delete head;
  89.                 head = NULL;
  90.             }
  91.             else {
  92.                 node * tmp = head;
  93.                 while(tmp->next->next != NULL) {
  94.                     tmp = tmp->next;
  95.                 }
  96.                 delete tmp->next;
  97.                 tmp->next = NULL;
  98.             }
  99.         }
  100.     }
  101.    
  102.     void deleteAll() {
  103.         while(head != NULL) {
  104.             deleteFront();
  105.         }
  106.     }
  107.    
  108.     void deleteNode(int x) {
  109.         if(head != NULL) {
  110.             if(head->info == x) {
  111.                 deleteFront();
  112.             }
  113.             else {
  114.                 node * tmp = head;
  115.                 node * prev = NULL;
  116.                
  117.                 while(tmp != NULL && tmp->info != x) {
  118.                     prev = tmp;
  119.                     tmp = tmp->next;
  120.                 }
  121.                
  122.                 if(tmp != NULL) {
  123.                     prev->next = tmp->next;
  124.                     delete tmp;
  125.                 }
  126.             }
  127.         }
  128.     }
  129.    
  130.     void deleteNode(node * x) {
  131.         if(head != NULL) {
  132.             if(head == x) {
  133.                 deleteFront();
  134.             }
  135.             else {
  136.                 node * tmp = head;
  137.                 node * prev = NULL;
  138.                
  139.                 while(tmp != NULL && tmp != x) {
  140.                     prev = tmp;
  141.                     tmp = tmp->next;
  142.                 }
  143.                
  144.                 prev->next = tmp->next;
  145.                 delete tmp;
  146.             }
  147.         }
  148.     }
  149.    
  150.     void print() {
  151.         node * tmp = head;
  152.         while(tmp != NULL) {
  153.             cout << tmp->info << " --> ";
  154.             tmp = tmp->next;
  155.         }
  156.         cout << endl;
  157.     }
  158.    
  159.    
  160. };
  161.  
  162.  
  163. int main() {
  164.    
  165.     SinglyLinkedList sll;
  166.    
  167.     sll.init();
  168.     int n;
  169.     cin >> n;
  170.    
  171.    
  172.     for(int i =0 ; i < n; i++) {
  173.         int x;
  174.         cin >> x;
  175.         sll.insertBack(x);
  176.     }
  177.    
  178.     int broj;
  179.     cin >> broj;
  180.    
  181.     for(int i =0; i < n; i++) {
  182.         sll.deleteNode(broj);
  183.     }
  184.    
  185.    
  186.     sll.print();
  187.    
  188.     return 0;
  189. }
  190.  
Advertisement
Add Comment
Please, Sign In to add comment