Advertisement
Josif_tepe

Untitled

Jan 14th, 2025
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.97 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct element {
  5.     string ime;
  6.     int broj;
  7. };
  8.  
  9. struct node {
  10.     element val;
  11.     node *next, *prev;
  12. };
  13. struct DLCL {
  14.     node *head, *tail;
  15.     void init() {
  16.         head = NULL;
  17.         tail = NULL;
  18.     }
  19.     void addFirst(element e) {
  20.         node *new_node = new node;
  21.         new_node->val = e;
  22.         new_node->next = NULL;
  23.         new_node->prev = NULL;
  24.        
  25.         if(head == NULL) {
  26.             head = new_node;
  27.             head->next = head;
  28.             head->prev = head;
  29.             tail = head;
  30.         }
  31.         else {
  32.             new_node->next = head;
  33.             head->prev = new_node;
  34.             new_node->prev = tail;
  35.             head = new_node;
  36.             tail->next = head;
  37.         }
  38.     }
  39.     void addLast(element e) {
  40.         node *new_node = new node;
  41.         new_node->val = e;
  42.         new_node->next = NULL;
  43.         new_node->prev = NULL;
  44.        
  45.         if(head == NULL) {
  46.             head = new_node;
  47.             head->prev = head;
  48.             head->next = head;
  49.             tail = head;
  50.         }
  51.         else {
  52.             tail->next = new_node;
  53.             new_node->prev = tail;
  54.             new_node->next = head;
  55.             head->prev = new_node;
  56.             tail = new_node;
  57.         }
  58.     }
  59.     void deleteFirst() {
  60.         if(head != NULL) {
  61.             if(head -> next == head) {
  62.                 delete head;
  63.                 head = NULL;
  64.                 tail = NULL;
  65.             }
  66.             else {
  67.                 node *tmp = head;
  68.                 head = head->next;
  69.                 head->prev = tail;
  70.                 tail->next = head;
  71.                 delete tmp;
  72.             }
  73.         }
  74.     }
  75.     void deleteLast() {
  76.         if(head != NULL) {
  77.             if(head->next == head) {
  78.                 delete head;
  79.                 head = NULL;
  80.                 tail = NULL;
  81.             }
  82.             else {
  83.                 node *tmp = tail;
  84.                 tail = tail->prev;
  85.                 tail->next = head;
  86.                 head->prev = tail;
  87.                 delete tmp;
  88.             }
  89.         }
  90.     }
  91.     void print() {
  92.         node *tmp = head;
  93.         while(tmp != tail) {
  94.             cout << tmp->val.ime << "," << tmp->val.broj << " <--> ";
  95.             tmp = tmp->next;
  96.         }
  97.         cout << tmp->val.ime << "," << tmp->val.broj << " <--> ";
  98.    
  99.     }
  100. };
  101. void fja(DLCL &lista, int br1, int br2, int br3, int br4) {
  102.     node *tmp = lista.head;
  103.    
  104.     while(tmp->val.broj != br1) {
  105.         tmp = tmp->next;
  106.     }
  107.     node *S1 = tmp;
  108.     node *tmps1 = S1;
  109.     tmp = lista.head;
  110.     while(tmp->val.broj != br2) {
  111.         tmp = tmp->next;
  112.     }
  113.     node *S2 = tmp;
  114.    
  115.     DLCL fi, si;
  116.     fi.init();
  117.     si.init();
  118.    
  119.     while(S1 != S2) {
  120.         fi.addLast(S1->val);
  121.         S1 = S1->next;
  122.     }
  123.    
  124.     fi.addLast(S1->val);
  125.     S1 = tmps1;
  126.     fi.print();
  127.     cout << endl;
  128.    
  129.     tmp = lista.head;
  130.    
  131.     while(tmp->val.broj != br3) {
  132.         tmp = tmp->next;
  133.     }
  134.     node *T1 = tmp;
  135.     node *tmpt2 = T1;
  136.     tmp = lista.head;
  137.     while(tmp->val.broj != br4) {
  138.         tmp = tmp->next;
  139.     }
  140.     node *T2 = tmp;
  141.     while(T1 != T2) {
  142.         si.addLast(T1->val);
  143.         T1 = T1->next;
  144.     }
  145.     si.addLast(T1->val);
  146.     T1 = tmpt2;
  147.     si.print();
  148.     cout << endl;
  149.    
  150.     DLCL res;
  151.     res.init();
  152.     tmp = lista.head;
  153.    
  154.     while(tmp != lista.tail) {
  155.         if(tmp == S1) {
  156.             while(si.head != NULL) {
  157.                 res.addLast(si.head->val);
  158.                 cout << si.head -> val.ime << "<-->";
  159.                 si.deleteFirst();
  160.             }
  161.             while(tmp != S2) {
  162.                 tmp = tmp->next;
  163.             }
  164.             tmp = tmp->next;
  165.  
  166.         }
  167.         else if(tmp == T1) {
  168.             while(fi.head != NULL) {
  169.                 res.addLast(fi.head->val);
  170.                 cout << fi.head -> val.ime << "<-->";
  171.  
  172.                 fi.deleteFirst();
  173.             }
  174.             while(tmp != T2) {
  175.                 tmp = tmp->next;
  176.             }
  177.             tmp = tmp->next;
  178.         }
  179.         else {
  180.             res.addLast(tmp->val);
  181.             cout << tmp->val.ime << "<-->";
  182.  
  183.             tmp = tmp->next;
  184.         }
  185.        
  186.     }
  187.     if(tmp == lista.tail) {
  188.         res.addLast(tmp->val);
  189.         cout << tmp->val.ime<<endl;
  190.     }
  191. //    res.print();
  192.    
  193.    
  194. }
  195. int main()
  196. {
  197.     DLCL dl;
  198.     dl.init();
  199.    
  200.    
  201.     element e;
  202.     e.ime = "Luka";
  203.     e.broj = 5;
  204.     dl.addLast(e);
  205.    
  206.     e.ime = "Ana";
  207.     e.broj = 1;
  208.     dl.addLast(e);
  209.    
  210.     e.ime = "Petar";
  211.     e.broj = 2;
  212.     dl.addLast(e);
  213.    
  214.     e.ime = "Marko";
  215.     e.broj = 6;
  216.     dl.addLast(e);
  217.    
  218.     e.ime = "Mia";
  219.     e.broj = 4;
  220.     dl.addLast(e);
  221.     e.ime = "Tea";
  222.     e.broj = 8;
  223.     dl.addLast(e);
  224.    
  225.     e.ime = "Boban";
  226.     e.broj = 10;
  227.     dl.addLast(e);
  228.    
  229.    
  230.     fja(dl, 1, 6, 4, 8);
  231.    
  232.    
  233.  
  234.     return 0;
  235. }
  236.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement