Advertisement
Josif_tepe

Untitled

Dec 5th, 2024
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.33 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int max_size = 1000;
  5. struct magacin {
  6.     int idx, niza[max_size];
  7.     void init() {
  8.         idx = -1;
  9.     }
  10.     bool isEmpty() {
  11.         if(idx == -1) {
  12.             return true;
  13.         }
  14.         return false;
  15.     }
  16.     bool isFull() {
  17.         if(idx == max_size - 1) {
  18.             return true;
  19.         }
  20.         return false;
  21.     }
  22.     void push(int x) {
  23.         if(isFull()) {
  24.             cout << "Stekot e full" << endl;
  25.             return;
  26.         }
  27.         idx++;
  28.         niza[idx] = x;
  29.     }
  30.     int pop() {
  31.         if(isEmpty()) {
  32.             cout << "Prazen stek" << endl;
  33.             exit(0);
  34.         }
  35.        
  36.         return niza[idx--];
  37.     }
  38.     int top() {
  39.         if(isEmpty()) {
  40.             cout << "prazen stek" << endl;
  41.             exit(0);
  42.         }
  43.         return niza[idx];
  44.     }
  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.     void dodadiPosle(node * kojNode, int x) {
  123.         node * tmp = new node;
  124.         tmp->val = x;
  125.         if(kojNode == NULL) {
  126.             dodadiPrv(x);
  127.             return;
  128.         }
  129.         if(kojNode->next == NULL) {
  130.             dodadiPosleden(x);
  131.             return;
  132.         }
  133.        
  134.        
  135.         node * sleden = kojNode->next;
  136.        
  137.         kojNode->next = tmp;
  138.         tmp->next = sleden;
  139.         sleden->prev = tmp;
  140.         tmp->prev = kojNode;
  141.        
  142.     }
  143.     void raspredeliPoBroj(int x) {
  144.         node *tmp = head;
  145.         pechati();
  146.  
  147.         bool ok = false;
  148.         if(head == NULL) {
  149.             dodadiPrv(x);
  150.             cout << x << " : " << "PRV" << endl;
  151.  
  152.             return;
  153.         }
  154.         if(x < head->val) {
  155.             dodadiPrv(x);
  156.             cout << x << " : " << "PRV" << endl;
  157.  
  158.             return;
  159.         }
  160.         while(tmp != NULL) {
  161.             if(x < tmp->val) {
  162.                 tmp = tmp->prev;
  163.                 break;
  164.             }
  165.             tmp = tmp->next;
  166.         }
  167.         if(tmp == NULL) {
  168.             dodadiPosleden(x);
  169.             cout << x << " : " << "PRV" << endl;
  170.  
  171.             return;
  172.         }
  173.         cout << x << " : " << tmp->val << endl;
  174.         dodadiPosle(tmp, x);
  175.     }
  176. };
  177.  
  178. int main()
  179. {
  180.     magacin m;
  181.     m.init();
  182.     m.push(41);
  183.     m.push(41);
  184.     m.push(46);
  185.     m.push(47);
  186.     m.push(44);
  187.     m.push(36);
  188.     m.push(37);
  189.     m.push(36);
  190.     m.push(39);
  191.    
  192.     DoublyLinkedList maski, zenski;
  193.     maski.init();
  194.     zenski.init();
  195.    
  196.    
  197.    
  198.    
  199.    
  200.     while(!m.isEmpty()) {
  201.         int p = m.pop();
  202.         if(p >= 36 && p <= 40) {
  203.             zenski.raspredeliPoBroj(p);
  204.         }
  205.         if(p >= 41 && p <= 47) {
  206.             maski.raspredeliPoBroj(p);
  207.         }
  208.     }
  209.     maski.pechati();
  210.     zenski.pechati();
  211.    
  212.    
  213.  
  214. }
  215.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement