Advertisement
Josif_tepe

Untitled

Dec 18th, 2024
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.15 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int max_size = 50;
  6. struct magacin {
  7.     int idx, niza[max_size];
  8.     void init() {
  9.         idx = -1;
  10.     }
  11.     bool isEmpty() {
  12.         if(idx == -1) {
  13.             return true;
  14.         }
  15.         return false;
  16.     }
  17.     bool isFull() {
  18.         if(idx == max_size - 1) {
  19.             return true;
  20.         }
  21.         return false;
  22.     }
  23.     void push(int x) {
  24.         if(isFull()) {
  25.             cout << "Stekot e full" << endl;
  26.             return;
  27.         }
  28.         idx++;
  29.         niza[idx] = x;
  30.     }
  31.     int pop() {
  32.         if(isEmpty()) {
  33.             cout << "Prazen stek" << endl;
  34.             exit(0);
  35.         }
  36.        
  37.         return niza[idx--];
  38.     }
  39.     int top() {
  40.         if(isEmpty()) {
  41.             cout << "prazen stek" << endl;
  42.             exit(0);
  43.         }
  44.         return niza[idx];
  45.     }
  46. };
  47. struct node {
  48.     int val;
  49.     node *next, *prev;
  50. };
  51.  
  52. struct DoublyLinkedList  {
  53.     node *head, *tail;
  54.    
  55.     void init() {
  56.         head = NULL;
  57.         tail = NULL;
  58.     }
  59.     void dodadiPrv(int x) {
  60.         node *tmp = new node;
  61.         tmp->val = x;
  62.         if(head == NULL) {
  63.             head = tmp;
  64.             tail = head;
  65.         }
  66.         else {
  67.             tmp->next = head;
  68.             head->prev = tmp;
  69.             head = tmp;
  70.         }
  71.     }
  72.     void dodadiPosleden(int x) {
  73.         node *tmp = new node;
  74.         tmp->val = x;
  75.         if(head == NULL) {
  76.             head = tmp;
  77.             tail = head;
  78.         }
  79.         else {
  80.             tail->next = tmp;
  81.             tmp->prev = tail;
  82.             tail = tmp;
  83.         }
  84.     }
  85.     void brishiPrv() {
  86.         if(head->next == NULL) {
  87.             delete head;
  88.             head = NULL;
  89.             tail = NULL;
  90.         }
  91.         if(head != NULL) {
  92.             node *tmp = head;
  93.             head = head->next;
  94.             delete tmp;
  95.         }
  96.     }
  97.     void brishiPosleden() {
  98.         if(head->next == NULL) {
  99.             delete head;
  100.             head = NULL;
  101.             tail = NULL;
  102.         }
  103.         else {
  104.             node *tmp = tail;
  105.             tail = tail->prev;
  106.             delete tail;
  107.         }
  108.     }
  109.     void brishiLista() {
  110.         while(head != NULL) {
  111.             brishiPrv();
  112.         }
  113.     }
  114.     void pechati() {
  115.         node *tmp = head;
  116.         while(tmp != NULL) {
  117.             cout << tmp->val << " <--> ";
  118.             tmp = tmp->next;
  119.         }
  120.         cout << endl;
  121.     }
  122.     bool dodadiPosle(int el) {
  123.         node *tmp = head;
  124.         bool ok = false;
  125.         while(tmp != NULL) {
  126.             if(tmp->val == el) {
  127.                 ok = true;
  128.                 break;
  129.             }
  130.             tmp = tmp->next;
  131.         }
  132.         if(ok) {
  133.             node * new_node = new node;
  134.             new_node->val = el;
  135.            
  136.             if(tmp->next == NULL) {
  137.                 dodadiPosleden(el);
  138.                 return ok;
  139.             }
  140.             node *sleden = tmp->next;
  141.             tmp->next = new_node;
  142.             new_node->prev = tmp;
  143.             new_node->next = sleden;
  144.             sleden->prev = new_node;
  145.            
  146.         }
  147.         return ok;
  148.     }
  149.    
  150. };
  151. void raspredelba(magacin m, DoublyLinkedList & even, DoublyLinkedList & odd) {
  152.     while(!m.isEmpty()) {
  153.         int el = m.top();
  154.         m.pop();
  155.        
  156.         if(el != 0) {
  157.             if(el % 2 == 0 && el <= 10) {
  158.                 if(!even.dodadiPosle(el)) {
  159.                     even.dodadiPosleden(el);
  160.                 }
  161.             }
  162.             else if(el % 2 == 1  && el > 10){
  163.                 if(!odd.dodadiPosle(el)) {
  164.                     odd.dodadiPosleden(el);
  165.                 }
  166.                
  167.             }
  168.         }
  169.     }
  170. }
  171. int main()
  172. {
  173.     magacin m;
  174.     m.init();
  175.     for(int i = 0; i < 13; i++) {
  176.         int x;
  177.         cin >> x;
  178.        
  179.         m.push(x);
  180.     }
  181.    
  182.     DoublyLinkedList even, odd;
  183.     even.init();
  184.     odd.init();
  185.    
  186.     raspredelba(m, even, odd);
  187.     cout << "Parni: ";
  188.     even.pechati();
  189.    
  190.    
  191.     cout << "Neparni: ";
  192.     odd.pechati();
  193.    
  194.     return 0;
  195.  
  196. }
  197. // 8 0 17 4 9 16 5 25 0 10 17 33 8
  198.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement