Advertisement
majczel23000

[AiSD] 5. Kolejka

Nov 29th, 2017
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.51 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. //===================
  5. //DOWIAZANIOWO
  6. //===================
  7.  
  8. struct element{
  9.     element *next;
  10.     int key;
  11. };
  12.  
  13. element *head=0;
  14. element *tail=0;
  15.  
  16. void enqueueList(int x)
  17. {
  18.     element *n;
  19.     n = new element;
  20.     n->key = x;
  21.     n->next = 0;
  22.     if(head==NULL)
  23.         head = n;
  24.     else
  25.         tail->next = n;
  26.     tail = n;
  27.     cout<<"[+]: "<< x <<endl;
  28. }
  29.  
  30. void dequeueList()
  31. {
  32.     if(head!=NULL)
  33.     {
  34.         int x = head->key;
  35.         head = head->next;
  36.         cout<<"[-]: "<< x<< endl;
  37.     }
  38.     else
  39.         cout<<"[-]: Kolejka pusta"<<endl;
  40.     if(head == NULL)
  41.         tail = NULL;
  42. }
  43.  
  44. void usunList()
  45. {
  46.     if(head == NULL)
  47.         cout<<"[USUN] Kolejka pusta"<<endl;
  48.     else
  49.     {
  50.         element *p;
  51.         while(head!=0)
  52.         {
  53.             p = head->next;
  54.             delete head;
  55.             head = p;
  56.         }
  57.         cout<<"[USUN] Usunieto cala kolejke"<<endl;
  58.     }
  59. }
  60.  
  61. void drukujList()
  62. {
  63.     cout<<"[KOLEJKA]: ";
  64.     if(head==NULL)
  65.         cout<<"Kolejka pusta"<<endl;
  66.     else
  67.     {
  68.         for(element *p = head; p!=0; p=p->next)
  69.             if(p->next == 0)
  70.                 cout<< p->key;
  71.             else
  72.                 cout<< p->key <<" ->";
  73.         cout<<endl;
  74.     }
  75. }
  76.  
  77. //===================
  78. //TABLICOWO
  79. //===================
  80.  
  81. const int rozmiar = 10;
  82. int kolejka[rozmiar];
  83. int head2 = 0;
  84. int tail2 = 0;
  85.  
  86. bool empty()
  87. {
  88.     for(int i= 0; i < rozmiar; i++)
  89.         if( kolejka[i]!=0)
  90.             return false;
  91.     return true;
  92. }
  93.  
  94. void enqueueTab(int x){
  95.     cout<<"[+]: ";
  96.     if(head2 == tail2 && !empty())
  97.     {
  98.         cout<<"Kolejka pelna"<<endl;
  99.         return;
  100.     }
  101.     if(head2 <= tail2)
  102.     {
  103.         if(tail2 < rozmiar-1)
  104.         {
  105.             kolejka[tail2]= x;
  106.             ++tail2;
  107.         }
  108.         else if(tail2 == rozmiar-1)
  109.         {
  110.             kolejka[tail2] = x;
  111.             tail2 = 0;
  112.         }
  113.         cout<< x<<endl;
  114.     }
  115.     else if(tail2 < head2)
  116.     {
  117.         kolejka[tail2] = x;
  118.         ++tail2;
  119.         cout<< x<<endl;
  120.     }
  121. }
  122. void drukujTab(){
  123.     int d = head2;
  124.     if(empty())
  125.         return;
  126.     if(d >= tail2)
  127.     {
  128.         while(d < rozmiar - 1)
  129.         {
  130.            cout<< kolejka[d] << " ";
  131.             ++d;
  132.         }
  133.         if(d == rozmiar-1)
  134.         {
  135.             cout << kolejka[d] << " ";
  136.             d = 0;
  137.         }
  138.     }
  139.     while(tail2 > d)
  140.     {
  141.         cout << kolejka[d] <<  " ";
  142.         ++d;
  143.     }
  144. }
  145. int dequeueTab(){
  146.     if(!empty())
  147.     {
  148.         int wynik = head2;
  149.         head2++;
  150.         return kolejka[wynik];
  151.     }
  152.     else
  153.     {
  154.         cout << "Kolejka pusty" << endl;
  155.         return -1;
  156.     }
  157. }
  158.  
  159.  
  160.  
  161. int main(){
  162.  
  163.     drukujList();
  164.     enqueueList(5);
  165.     enqueueList(3);
  166.     enqueueList(-8);
  167.     enqueueList(7);
  168.     enqueueList(6);
  169.     drukujList();
  170.     dequeueList();
  171.     dequeueList();
  172.     dequeueList();
  173.     dequeueList();
  174.     dequeueList();
  175.     dequeueList();
  176.     drukujList();
  177.     enqueueList(4);
  178.     enqueueList(8);
  179.     drukujList();
  180.     usunList();
  181.     drukujList();
  182.     enqueueList(6);
  183.     enqueueList(4);
  184.     drukujList();
  185.    cout<<endl<<endl<<endl;
  186.  
  187.  
  188.     enqueueTab(5);
  189.     enqueueTab(6);
  190.     enqueueTab(-4);
  191.     enqueueTab(8);
  192.     enqueueTab(6);
  193.     enqueueTab(2);
  194.     enqueueTab(1);
  195.     enqueueTab(3);
  196.     enqueueTab(5);
  197.     enqueueTab(9);
  198.     enqueueTab(8);
  199.     enqueueTab(-1);
  200.  
  201.     drukujTab();
  202.     dequeueTab();
  203.     drukujTab();
  204.     return 0;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement