Advertisement
cunha1

Untitled

Feb 15th, 2020
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.46 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. struct cvorListe {
  6.     int vrijednost;
  7.     cvorListe* sljedeci;
  8. }; // zadavanje cvora liste
  9.  
  10. int main() {
  11.     cvorListe
  12.         *glava = new cvorListe, // kreiranje glave liste
  13.         *zadnji = glava; // pratimo si zadnji element liste
  14.  
  15.     glava->sljedeci = NULL; // glava nema sljedeceg u pocetku
  16.  
  17.     for(int i=0;i<10;i++) { // pomocu petlje unijet cemo 10 brojeva u listu
  18.         int unos;
  19.         cin>>unos;
  20.         cvorListe* el = new cvorListe; // novi element liste
  21.         el->vrijednost = unos; // postavimo mu vrijednost
  22.         el->sljedeci = NULL; // novi element jos zasad nema sljedeceg
  23.         zadnji->sljedeci = el; // u ovom slucaju, "zadnji" je zapravo prosli element, bio je zadnji prije nego smo dodali novi
  24.                                // zapravo predzadnji element spojimo sa zadnjim
  25.         zadnji = el; // sad će novi element biti zadnji
  26.     }
  27.  
  28.     // ispis svih elemenata vezane liste
  29.  
  30.     cvorListe* el = glava->sljedeci; // varijabla el pratit ce nam trenutni element, ne krecemo od glave jer ona ne drzi vrijednost, nego tek od sljedeceg
  31.  
  32.     while(el!=NULL) { // petlja se izvrsava sve dok ne dodemo do zadnjeg
  33.         cout << el->vrijednost << endl;
  34.         el=el->sljedeci; // petlja se prebacuje na sljedeci element
  35.     }
  36.  
  37.     // tipican bubble sort na vezanoj listi
  38.    
  39.     bool zamjena;
  40.  
  41.     cvorListe *lPtr; // lijevi pointer pokazuje na pocetak liste
  42.     cvorListe *rPrt = NULL; // desni pointer pokazivat ce na kraj liste nakon prvog prolaza
  43.     do
  44.     {  
  45.         zamjena = 0;
  46.         lPtr = glava;
  47.         while(lPtr->sljedeci != rPrt)
  48.         {
  49.             if (lPtr->vrijednost > lPtr->sljedeci->vrijednost)
  50.             {
  51.                 // zamjeniti lPtr i lPtr->sljedeci (isto kao da zamjenimo vrijednost[j] i vrijednost[j+1] u poljima)
  52.                 int temp = lPtr->vrijednost;
  53.                 lPtr->vrijednost = lPtr->sljedeci->vrijednost;
  54.                 lPtr->sljedeci->vrijednost = temp;
  55.                 zamjena = 1;
  56.             }
  57.             lPtr = lPtr->sljedeci;
  58.         }
  59.         rPrt = lPtr;
  60.  
  61.     }
  62.     while(zamjena);
  63.  
  64.  
  65.     cout << endl << endl;
  66.     // opet ispis, ovaj put sortirano
  67.     el = glava->sljedeci; // varijabla el pratit ce nam trenutni element, ne krecemo od glave jer ona ne drzi vrijednost, nego tek od sljedeceg
  68.  
  69.     while(el!=NULL) { // petlja se izvrsava sve dok ne dodemo do zadnjeg
  70.         cout << el->vrijednost << endl;
  71.         el=el->sljedeci; // petlja se prebacuje na sljedeci element
  72.     }
  73.     return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement