Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. /*
  2. * Using Shuttle Sort algorithm, sort in ascending sort the list of random numbers stored in doubly linked list
  3. * --
  4. * build with CLion/ch-0/183.5429.37/bin/cmake/linux/bin/cmake and little miracle
  5. */
  6. #include <iostream>
  7. #include <stdlib.h>
  8. #include <time.h>
  9.  
  10. using namespace std;
  11.  
  12. struct Saraksts // classic
  13. {
  14. int Dati;
  15. Saraksts *Cits, *Iepr;
  16. };
  17.  
  18. void ironiski_nosutit_final_psd_maketu_uz_izdruku(struct Saraksts *p )
  19. {
  20. while(p != NULL)
  21. {
  22. cout << p->Dati << " ";
  23. p = p->Cits;
  24. }
  25. cout << endl;
  26. }
  27.  
  28. int main (){
  29.  
  30. srand(time(0)); // "random" sēkliņas izmešana
  31. Saraksts *H, *p, *q;
  32.  
  33. cout << "Original: " << endl;
  34.  
  35. H = new Saraksts; // tiek izveidots saraksta 1. ieraksts, kas arī tiek automātiski atzīmēts par ierakstu saraksta pirmo punktu
  36. H->Iepr = NULL; // atsauce uz iepriekšejo ierakstu ir NULL par cik iepriekšējais nav nemaz iespējams
  37. H->Dati = rand() % 99 + 1; // aizpildam ar random vērtību 1..99
  38. p = H; // atgriež atsauci sākumpunktā
  39.  
  40. for(int i=0; i<19; i++) // cikls izpildīsies 0,1,2 ... 18,19 reizes. Kopā 20 reizes
  41. {
  42. p->Cits = new Saraksts; // Mainīgā (operanda, šķiet) sadaļā `Cits` piešķiram jauno mainīgo
  43. p->Cits->Iepr = p; // šī mainīgā Cits vērtības Iepr piešķiršana
  44. p = p->Cits;
  45. p->Dati = rand() % 99 + 1; // vērtības piešķiršana
  46. }
  47. p->Cits = NULL; // kā arī definējam ieraksta pēdējo vērtību
  48.  
  49. p = H; // Atgriežam atsauci sākotnējā punktā
  50. ironiski_nosutit_final_psd_maketu_uz_izdruku(p); // izdruka ekrānā, loooģiski
  51.  
  52. p = H; // Atgriežam atsauci sākotnējā punktā
  53. do
  54. {
  55. while(p->Dati > p->Cits->Dati )
  56. {
  57. swap(p->Cits->Dati , p->Dati);
  58. if(p->Iepr != NULL )
  59. p = p->Iepr; // atsauci atmetam uz iepriekšējo vērtību, ja nav NULL
  60. else break; // ja iepriekš ir break, tad jau laužam ciklu
  61. }
  62. p = p->Cits; // skatāmies nākošo vērtību
  63. }
  64. while(p->Cits!=NULL); // nodarbinām kamēr nākošā vērtībā nav NULL
  65.  
  66. cout << "Sorted:" << endl;
  67. p = H;
  68. ironiski_nosutit_final_psd_maketu_uz_izdruku(p); // izvade
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement