Talar97

[AISD] Kolejki

Jan 30th, 2019
327
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.58 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. struct elem{
  7.     int dane;
  8.     elem* nast;
  9. };
  10.  
  11. void add(elem* &pocz, elem* &kon, int x){
  12.     elem* nowy = new elem;                  //Tworzymy nowy element
  13.     nowy->dane = x;                         //Przypisujemy do niego dane
  14.     nowy->nast = NULL;                      //Nastepny element nie istnieje, wiec NULL
  15.     if(kon != NULL){                        //Sprawdzamy czy koniec kolejki istnieje
  16.         kon-> nast = nowy;                  //Jesli tak, to koniec kolejki = nowy
  17.         kon = nowy;
  18.     }
  19.     else{                                   //Jezeli koniec nie istnieje
  20.         kon = nowy;                         //to koniec i poczatek = nowy element
  21.         pocz = nowy;
  22.     }
  23. }
  24.  
  25. int next(elem* &pocz, elem* &kon){
  26.     if(pocz != NULL){                       //Sprawdzamy czy w ogole istnieje
  27.         elem * stary = pocz;                //Do zmn stary przypisujemy poczatek
  28.         int wynik = stary->dane;            //wynik = dane z poczatku kolejki
  29.         if(pocz == kon) kon = NULL;         //???
  30.         pocz = stary->nast;                 //Poczatek =  nastepny element w kolejce
  31.         delete stary;                       //usuwamy
  32.         return wynik;                       //zwracamy wartosc
  33.     }
  34.     else { return -1; }
  35. }
  36.  
  37. int firstElem(elem* &pocz, elem* &kon){     //Pierwszy element ale bez usuwania
  38.     if(pocz !=NULL){
  39.         return pocz->dane;
  40.     }
  41. }
  42.  
  43. bool isEmpty(elem* &pocz){                  //Sprawdzanie czy pusta
  44.     if(pocz == NULL) return true;
  45.     else return false;
  46. }
  47.  
  48. void wyswietlKolejke(elem* &pocz, elem* &kon){  //Bez usuwania
  49.     if(pocz != NULL){                       //Sprawdzamy warunek
  50.         elem* tmp = pocz;                   //do tmp przypisujemy poczatek
  51.         while(tmp != NULL){                 //dopoki tmp != null
  52.             cout << tmp->dane << ", ";      //to wyswietlamy dane z tmp
  53.             tmp = tmp->nast;                //i do tmp przypisujemy nastepny element kolejki
  54.         }
  55.     }
  56. }
  57.  
  58. int main() {
  59.     elem* pocz = NULL;
  60.     elem* kon = NULL;
  61.    
  62.     elem* pocz2 = NULL;
  63.     elem* kon2 = NULL;
  64.  
  65.     add(pocz, kon, 1);
  66.     add(pocz, kon, 2);
  67.     add(pocz, kon, 3);
  68.     add(pocz, kon, 4);
  69.    
  70.     cout << next(pocz, kon) << endl;        //1 - sciaglo z kolejki
  71.     cout << next(pocz, kon) << endl;        //2 - sciaglo z kolejki
  72.     cout << firstElem(pocz, kon) << endl;   //3 - bez usuniecia
  73.     cout << firstElem(pocz, kon) << endl;   //3 - bez usuniecia
  74.    
  75.     wyswietlKolejke(pocz, kon);
  76.    
  77.     return 0;
  78. }
Add Comment
Please, Sign In to add comment