Advertisement
Guest User

Untitled

a guest
May 22nd, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. struct element {
  7. string znak;
  8. int priorytet;
  9. element *nastepny;
  10. element *poprzedni;
  11. };
  12. void queue() {
  13. element *wierzcholek_kolejki = NULL;
  14. element *koniec_kolejki = NULL;
  15. element *pomoc = NULL;
  16. element *pivot = NULL;
  17. element *tmp = NULL;
  18. cout << " Podaj jedna z instrukcji:\n"
  19. << "d - aby dodac napis do kolejki\n"
  20. << "u - aby usunac napis z kolejki\n"
  21. << "w - aby wyswietlic zawartosc kolejki\n"
  22. << "x - aby zakonczyc\n";
  23. char instrukcja; //info od uzytkownika
  24. int elements = 0;
  25. bool loop=true;
  26. while (loop) {
  27. cin >> instrukcja;
  28. switch (instrukcja) {
  29. case 'd': //dodawanie
  30. pomoc = new element; // tworzymy nowy obiekt
  31. tmp = new element;
  32. cout << "Podaj element" << endl;
  33. cin >> pomoc->znak;
  34. cout << "Podaj priorytet" << endl;
  35. cin >> pomoc->priorytet;
  36. if (wierzcholek_kolejki == NULL) // jezeli kolejka jest pusta
  37. {
  38. pomoc->nastepny = pomoc->poprzedni = NULL;
  39. koniec_kolejki = wierzcholek_kolejki = pomoc; // poczatek i koniec kolejki jest tym samym elementem
  40. }
  41. else if (pomoc->priorytet > 1) {
  42. pivot = wierzcholek_kolejki;
  43. while (pivot->priorytet >= pomoc->priorytet) {
  44. tmp = pivot;
  45. pivot = pivot->nastepny;
  46. if (pivot == NULL)
  47. break;
  48. }
  49. if (pivot == wierzcholek_kolejki) {
  50. pomoc->poprzedni = NULL;
  51. wierzcholek_kolejki->poprzedni = pomoc;
  52. pomoc->nastepny = wierzcholek_kolejki;
  53. wierzcholek_kolejki = pomoc;
  54. }
  55. else if (pivot == NULL)
  56. {
  57. tmp->nastepny = pomoc;
  58. pomoc->poprzedni = tmp;
  59. pomoc->nastepny = NULL;
  60. koniec_kolejki = pomoc; // ustawiamy koniec kolejki na nowym elemencie
  61. }
  62. else
  63. {
  64. tmp->nastepny = pomoc;
  65. pomoc->poprzedni = tmp;
  66. pivot->poprzedni = pomoc;
  67. pomoc->nastepny = pivot;
  68. }
  69. }
  70. else
  71. {
  72. pomoc->nastepny = NULL;
  73. koniec_kolejki->nastepny = pomoc; // dodajemy element na koniec wiec, ustawiamy wskaznik na niego w elemencie, ktory byl ostatni
  74. pomoc->poprzedni = koniec_kolejki; // poprzednikiem nowego elementu jest dotychczasowy ostatni element
  75. koniec_kolejki = pomoc; // ustawiamy koniec kolejki na nowym elemencie
  76. }
  77. break;
  78. case 'u': //usuwanie
  79. if (wierzcholek_kolejki != NULL){
  80. pomoc = wierzcholek_kolejki; // ustawiamy pomoc na wierzcholek kolejki
  81. if (wierzcholek_kolejki == koniec_kolejki) // jezeli jest tylko jeden element w kolejce
  82. wierzcholek_kolejki = koniec_kolejki = NULL; // to teraz kolejka bedzie usta
  83. else // jezeli jest wiecej elementow
  84. wierzcholek_kolejki = wierzcholek_kolejki->nastepny; // przestawiamy wierzcholek na drugi element (pierwszy musimy usunac)
  85. delete pomoc; // usuwamy element ze szczytu stosu
  86. }
  87. else
  88. cout << "Kolejka jest pusta\n";
  89. break;
  90. case 'w': //wyswietlanie
  91. if (wierzcholek_kolejki != NULL)
  92. {
  93. cout << "Zawartosc kolejki:\n";
  94. pomoc = wierzcholek_kolejki;
  95. while (pomoc != NULL) // dopoki pokazujemy na jakis element stosu (listy)
  96. {
  97. cout << pomoc->znak << "(" << pomoc->priorytet << ")" <<" ";
  98. pomoc = pomoc->nastepny; // przechodzimy na nastepny element na liscie
  99. }
  100. }
  101. else
  102. cout << "Kolejka jest pusta";
  103. cout << endl;
  104. break;
  105. case 'x': //wyjscie
  106. loop = false;
  107. break;
  108. default:
  109. cout << " Podaj jedna z instrukcji:\n"
  110. << "d - aby dodac napis do kolejki\n"
  111. << "u - aby usunac napis z kolejki\n"
  112. << "w - aby wyswietlic zawartosc kolejki\n"
  113. << "x - aby zakonczyc\n";
  114. break;
  115. }
  116. }
  117. }
  118. int main() {
  119. cout << "Kolejka" << endl;
  120. queue();
  121.  
  122.  
  123. system("pause");
  124. return 0;
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement