Advertisement
Josif_tepe

Untitled

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