Advertisement
Josif_tepe

Untitled

Dec 24th, 2024
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.42 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node {
  5.     int val;
  6.     node * next;
  7. };
  8. struct SLCL {
  9.     node *head, *tail;
  10.    
  11.     void init() {
  12.         head = NULL;
  13.         tail = NULL;
  14.     }
  15.     void insertFirst(int x) {
  16.         node * new_node = new node;
  17.         new_node->val = x;
  18.         if(head == NULL) {
  19.             head = new_node;
  20.             head->next = head;
  21.             tail = head;
  22.         }
  23.         else {
  24.             new_node->next = head;
  25.             head = new_node;
  26.             tail->next = head;
  27.         }
  28.     }
  29.     void insertLast(int x) {
  30.         node * new_node = new node;
  31.         new_node->val = x;
  32.         if(head == NULL) {
  33.             head = new_node;
  34.             head->next = head;
  35.             tail = head;
  36.         }
  37.         else {
  38.             tail->next = new_node;
  39.             tail = new_node;
  40.             tail->next = head;
  41.         }
  42.     }
  43.    
  44.     void deleteFirst() {
  45.         if(head != NULL) {
  46.             if(head->next == head) {
  47.                 delete head;
  48.                 head = NULL;
  49.                 tail = NULL;
  50.             }
  51.             else {
  52.                 node *tmp = head;
  53.                 head = head->next;
  54.                 tail->next = head;
  55.                 delete tmp;
  56.                
  57.             }
  58.         }
  59.     }
  60.     void deleteLast() {
  61.         if(head != NULL) {
  62.             if(head -> next == head) {
  63.                 delete head;
  64.                 head = NULL;
  65.                 tail = NULL;
  66.             }
  67.             else {
  68.                 node *tmp = head;
  69.                 while(tmp->next != tail) {
  70.                     tmp = tmp->next;
  71.                 }
  72.                 tail = tmp;
  73.                 delete tmp->next;
  74.                 tail->next = head;
  75.             }
  76.         }
  77.     }
  78.     void print() {
  79.         node *tmp = head;
  80.        
  81.         while(tmp != tail) {
  82.                 cout << tmp->val << "--> ";
  83.                 tmp = tmp->next;
  84.            
  85.             }
  86.         cout << tmp->val << endl;
  87.         }
  88.    
  89. };
  90. int main() {
  91.    
  92.     SLCL slcl;
  93.     slcl.init();
  94.     slcl.insertLast(105);
  95.     slcl.insertLast(108);
  96.     slcl.insertLast(109);
  97.     slcl.insertLast(150);
  98.     slcl.insertLast(240);
  99.     slcl.insertLast(202);
  100.     slcl.insertLast(300);
  101.    
  102.     node *tmp = slcl.head;
  103.     while(tmp->val != 150) {
  104.         tmp = tmp->next;
  105.     }
  106.    
  107.     slcl.tail->next = tmp;
  108.    
  109.    
  110.     return 0;
  111.  
  112. }
  113.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement