Advertisement
Josif_tepe

Untitled

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