Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. using namespace std;
  4.  
  5. struct student
  6. {
  7. char Nazwisko[100];
  8. char Imie[100];
  9. };
  10. struct lista_studentow
  11. {
  12. lista_studentow *sa_up;
  13. student sa;
  14. lista_studentow *sa_down;
  15. };
  16. void dane_studenta(lista_studentow &st)
  17. {
  18. cout<<"Podaj nazwisko studenta: ";
  19. cin>>st.sa.Nazwisko;
  20. cout<<"Podaj imie studenta: ";
  21. cin>>st.sa.Imie;
  22.  
  23. }
  24.  
  25. void dodaj_studenta(lista_studentow **sa)
  26. {
  27. lista_studentow *as=*sa;
  28. if(*sa>0)
  29. {
  30. lista_studentow *nsa = new lista_studentow;
  31. dane_studenta(*nsa);
  32. while(as->sa_down){as = as->sa_down;}
  33. nsa->sa_up = as;
  34. nsa->sa_down = 0;
  35. as->sa_down = nsa;
  36. }
  37. else
  38. {
  39. *sa = new lista_studentow;
  40. dane_studenta(**sa);
  41. (*sa)->sa_up = nullptr;
  42. (*sa)->sa_down = nullptr;
  43. }
  44. }
  45.  
  46.  
  47. void usun_studenta(lista_studentow **sa , int numerek)
  48. {
  49. cout<<"Wybierz indeks studenta ktorego chcesz usunac : ";
  50. cin>>numerek;
  51. if(*sa && numerek >= 0)
  52. {
  53. lista_studentow *kopia=*sa;
  54. for(int i=1 ; i<=numerek ; i++)
  55. {
  56. kopia = kopia->sa_down;
  57. }
  58. if(!kopia->sa_up && !kopia->sa_down)
  59. {
  60. delete kopia;
  61. *sa = 0;
  62. }
  63. else if(numerek ==0)
  64. {
  65. *sa = (*sa)->sa_down;
  66. delete kopia;
  67. kopia =0;
  68. }
  69. else if(kopia->sa_up && kopia->sa_down)
  70. {
  71. kopia->sa_up->sa_down = kopia->sa_down;
  72. kopia->sa_down->sa_up = kopia->sa_up;
  73. delete kopia;
  74. kopia = 0;
  75. }
  76. else if (!kopia->sa_down)
  77. {
  78. kopia->sa_up->sa_down = 0;
  79. delete kopia;
  80. kopia =0;
  81. }
  82. }
  83. }
  84. void wypisanie_studenta(lista_studentow *sa)
  85. {
  86. if(sa)
  87. {
  88. cout<<"=========================================================\n";
  89. // cout<<sa<<endl;
  90. do
  91. {
  92. cout<<"Imie : "<<sa->sa.Imie<<endl;
  93. cout<<"Nazwisko : "<<sa->sa.Nazwisko<<endl;
  94. cout<<"=========================================================\n";
  95. sa = sa->sa_down;
  96. }while(sa);
  97. }
  98. }
  99. int main()
  100. {
  101. lista_studentow *sa=0;
  102. int x;
  103. char c;
  104.  
  105. while(true)
  106.  
  107. {
  108. cout<<"[1] Dodaj studenta"<<endl;
  109. cout<<"[2] Wypisz studentow"<<endl;
  110. cout<<"[3] Usun studenta"<<endl;
  111. cout<< "[q]/[Q] Wyjscie"<<endl;
  112. char wybor;
  113. cin>>wybor;
  114. if (wybor=='q' || wybor=='Q')
  115. exit(0);
  116. else
  117. {
  118.  
  119. switch(wybor)
  120. {
  121. case '1': dodaj_studenta(&sa);
  122. break;
  123. case '2': wypisanie_studenta(sa);
  124. break;
  125. case '3': usun_studenta(&sa,x);
  126. break;
  127. }
  128. }
  129. cout<<endl;
  130. }
  131.  
  132. // do
  133. // {
  134. // cout<<"[1] Dodaj studenta"<<endl;
  135. // cout<<"[2] Wypisz studenta"<<endl;
  136. // cout<<"[3] Usun studenta o indeksie podanym w kodzie programu"<<endl;
  137. // int a;
  138. // cin>>a;
  139. // switch(a)
  140. // {
  141. // case 1:
  142. // dodaj_studenta(&sa);
  143. // break;
  144. // case 2:
  145. // wypisanie_studenta(sa);
  146. // break;
  147. // case 3:
  148. // usun_studenta(&sa,x);
  149. // break;
  150. // default:
  151. // break;
  152. // }
  153. // cout<< "[q]/[Q] Wyjscie"<<endl;
  154. //
  155. // cin>>c;
  156. // }while(c!='q' || c!='Q');
  157. }
  158.  
  159.  
  160.  
  161.  
  162. // za pomoca operatora new
  163. // wszystkie operacje w osobnej liscie
  164. // dwa dodatkwoe wskazniki ktore beda pokazywac na poczatek listy i na koniec
  165. // wyswietanie w lewo i wyswietlanie w prawo
  166. // pierwszy element nie ma poprzednika
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement