Advertisement
Josif_tepe

Untitled

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