Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.81 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3.  
  4.  
  5. struct obywatel {
  6. std::string nazwisko;
  7. uint64_t pesel;
  8. obywatel* nastepnyObywatel;
  9. };
  10. void dodajNaPoczatek(const std::string &nazwisko, uint64_t pesel, obywatel* &lista) {
  11. obywatel* nowy = new obywatel;
  12. nowy->nazwisko = nazwisko;
  13. nowy->pesel = pesel;
  14. nowy->nastepnyObywatel = lista;
  15. lista = nowy;
  16. }
  17. void wyswietlObywateli(const obywatel* lista) {
  18. while (lista != nullptr) {
  19. std::cout << lista->nazwisko << " " << lista->pesel << std::endl;
  20. lista = lista->nastepnyObywatel;
  21. }
  22. }
  23. void dodajNaKoniec(const std::string &nazwisko, uint64_t pesel, obywatel* &lista) {
  24. if (lista == nullptr) {
  25. lista = new obywatel{ nazwisko, pesel, nullptr };
  26. }
  27. else {
  28. obywatel* lista2 = lista;
  29. while (lista2->nastepnyObywatel != nullptr)
  30. lista2 = lista2->nastepnyObywatel;
  31. lista2->nastepnyObywatel = new obywatel{ nazwisko, pesel, nullptr };
  32. }
  33. }
  34. void wyczyscListe(obywatel* &lista) {
  35. obywatel* tmp;
  36. while (lista != nullptr) {
  37. tmp = lista->nastepnyObywatel;
  38. delete lista;
  39. lista = tmp;
  40. }
  41. }
  42. void usunObywatela(uint64_t pesel, obywatel* &lista) {
  43. obywatel* wsk = lista;
  44. while (wsk != nullptr) {
  45. if (wsk->pesel == pesel) {
  46. obywatel* tmp = wsk->nastepnyObywatel;
  47. delete wsk;
  48. wsk = tmp;
  49. lista = wsk;
  50. continue;
  51. }
  52. while (wsk != nullptr && wsk->nastepnyObywatel != nullptr) {
  53. if (wsk->nastepnyObywatel->pesel == pesel) {
  54. obywatel* tmp = wsk->nastepnyObywatel->nastepnyObywatel;
  55. delete wsk->nastepnyObywatel;
  56. wsk->nastepnyObywatel = tmp;
  57. }
  58. wsk = wsk->nastepnyObywatel;
  59. }
  60. return;
  61. }
  62. }
  63. void dodajObywatela(const std::string& nazwisko, uint64_t pesel, obywatel* &lista) {
  64. if (lista != nullptr) {
  65. if (lista->nazwisko > nazwisko) {
  66. obywatel* tmp = new obywatel{ nazwisko, pesel, lista };
  67. lista = tmp;
  68. return;
  69. }
  70. obywatel* wsk = lista;
  71. while (wsk->nastepnyObywatel != nullptr) {
  72. if (wsk->nastepnyObywatel->nazwisko > nazwisko) {
  73. wsk->nastepnyObywatel = new obywatel{ nazwisko,pesel,wsk->nastepnyObywatel };
  74. return;
  75. }
  76. wsk = wsk->nastepnyObywatel;
  77. }
  78. wsk->nastepnyObywatel = new obywatel{ nazwisko, pesel, nullptr };
  79.  
  80. }
  81. else lista = new obywatel{ nazwisko, pesel, nullptr };
  82. }
  83. int main() {
  84. obywatel* pierwszy = nullptr;
  85. /*dodajNaPoczatek("Nowak", 100, pierwszy);
  86. dodajNaKoniec("Nowaka", 101, pierwszy);
  87. dodajNaKoniec("Nowakb", 102, pierwszy);
  88. dodajNaKoniec("Nowakc", 103, pierwszy);
  89. dodajNaPoczatek("Nowakd", 104, pierwszy);
  90. */
  91.  
  92. //usunObywatela(104, pierwszy);
  93.  
  94. //wyswietlObywateli(pierwszy);
  95. dodajObywatela("Nowak", 100, pierwszy);
  96. dodajObywatela("Nowakb", 102, pierwszy);
  97. dodajObywatela("Nowaka", 104, pierwszy);
  98. dodajObywatela("Kowalski", 99, pierwszy);
  99. dodajObywatela("Nowakal", 95, pierwszy);
  100.  
  101. wyczyscListe(pierwszy);
  102.  
  103.  
  104. return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement