Advertisement
Josif_tepe

Untitled

Jan 24th, 2025
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.09 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct node {
  5.     char val;
  6.     node * next;
  7. };
  8.  
  9. struct SLL {
  10.     node * head;
  11.    
  12.     void init() {
  13.         head = NULL;
  14.     }
  15.    
  16.     void insertFirst(char val) {
  17.         node * new_node = new node;
  18.         new_node->val = val;
  19.        
  20.         if(head == NULL) {
  21.             head = new_node;
  22.         }
  23.         else {
  24.             new_node->next = head;
  25.             head = new_node;
  26.         }
  27.     }
  28.    
  29.     void insertLast(char val) {
  30.         node * new_node = new node;
  31.         new_node->val = val;
  32.        
  33.         if(head == NULL) {
  34.             head = new_node;
  35.         }
  36.         else if(head->next == NULL) {
  37.             head->next = new_node;
  38.             new_node->next = NULL;
  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->next = NULL;
  47.         }
  48.     }
  49.    
  50.     void deleteFirst() {
  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.                 delete tmp;
  60.             }
  61.         }
  62.     }
  63.     void deleteLast() {
  64.         if(head != NULL) {
  65.             if(head -> next == NULL) {
  66.                 delete head;
  67.                 head =  NULL;
  68.             }
  69.             else {
  70.                 node * tmp = head;
  71.                 while(tmp -> next -> next != NULL) {
  72.                     tmp = tmp->next;
  73.                 }
  74.                 node * tmp2 = tmp->next;
  75.                 delete tmp2;
  76.                 tmp->next = NULL;
  77.             }
  78.         }
  79.     }
  80.    
  81.     node * findLastNode(char val) {
  82.         node * tmp = head;
  83.         while(tmp->val != val) {
  84.             tmp = tmp->next;
  85.         }
  86.         return tmp;
  87.     }
  88.     void print() {
  89.         node * tmp = head;
  90.         while(tmp != NULL) {
  91.             cout << tmp->val << " --> ";
  92.             tmp = tmp->next;
  93.         }
  94.         cout << endl;
  95.     }
  96. };
  97. const int max_size = 1000;
  98. struct magacin {
  99.     int idx;
  100.     char niza[max_size];
  101.    
  102.     void init() {
  103.         idx = -1;
  104.     }
  105.    
  106.     bool isEmpty() {
  107.         if(idx == -1) {
  108.             return true;
  109.         }
  110.         else {
  111.             return false;
  112.         }
  113.     }
  114.    
  115.     bool isFull() {
  116.         if(idx == max_size - 1) {
  117.             return true;
  118.         }
  119.         else {
  120.             return false;
  121.         }
  122.     }
  123.    
  124.     int size() {
  125.         return idx + 1;
  126.     }
  127.    
  128.     void push(char element) {
  129.         if(isFull()) {
  130.             cout << "Nema poveke mesto za elementi" << endl;
  131.             return;
  132.         }
  133.         idx++;
  134.         niza[idx] = element;
  135.     }
  136.     void pop() {
  137.         if(isEmpty()) {
  138.             cout << "Stekot e prazen" << endl;
  139.             return;
  140.         }
  141.         idx--;
  142.     }
  143.    
  144.     char top() {
  145.         if(isEmpty()) {
  146.             cout << "Nema elementi vo stekot" << endl;
  147.             return -1;
  148.  
  149.         }
  150.         return niza[idx];
  151.     }
  152.    
  153.    
  154. };
  155. int main()
  156. {
  157.  
  158.    
  159.     SLL sll;
  160.     sll.init();
  161.     sll.insertLast('i');
  162.     sll.insertLast('s');
  163.     sll.insertLast('p');
  164.     sll.insertLast('i');
  165.     sll.insertLast('t');
  166.     sll.insertLast(' ');
  167.     sll.insertLast('p');
  168.     sll.insertLast('s');
  169.     sll.insertLast('p');
  170.    
  171.    
  172.     char F = ' ';
  173.    
  174.     magacin stack;
  175.     stack.init();
  176.    
  177.     node * last = sll.findLastNode(F);
  178.    
  179.     node * h = sll.head;
  180.    
  181.     SLL rsll;
  182.     rsll.init();
  183.     while(h != last) {
  184.         rsll.insertFirst(h->val);
  185.         stack.push(h->val);
  186.         h = h->next;
  187.     }
  188.    
  189.     stack.push(F);
  190.    
  191.    
  192.    
  193.    
  194.     while(rsll.head != NULL) {
  195.         stack.push(rsll.head->val);
  196.         rsll.deleteFirst();
  197.     }
  198.    
  199.     while(!stack.isEmpty()) {
  200.         cout << stack.top();
  201.         stack.pop();
  202.     }
  203.     cout << endl;
  204.    
  205.    
  206.     return 0;
  207. }
  208.  
  209. /*
  210.  9
  211.  i
  212.  s
  213.  p
  214.  i
  215.  t
  216.  
  217.  p
  218.  s
  219.  p
  220.  
  221.  
  222.  
  223.  **/
  224.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement