Advertisement
Guest User

bbb

a guest
Jan 17th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. #include <time.h>
  2. #include <stdlib.h>
  3. #include <iostream>
  4. #include <conio.h>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. struct ELEMENT
  10. {
  11. int Wartosc;
  12. struct ELEMENT *Nastepny;
  13. };
  14. struct INFO
  15. {
  16. ELEMENT *Glowa;
  17. ELEMENT *Ogon;
  18. };
  19.  
  20.  
  21. void Do_Listy(INFO *Wsk, int L);
  22. void Tworz_Liste(INFO *Wsk, int n);
  23. void Pisz_Liste(INFO *Wsk);
  24. void Usun_Z_Listy(INFO *Wsk);
  25. void Usun_Liste(INFO *Wsk);
  26. int main()
  27. {
  28. srand(time(NULL));
  29. int n;
  30. INFO *Wsk;
  31. cout << "Podaj dlugosc listy: ";
  32. cin >> n;
  33. Wsk = new INFO;
  34. Tworz_Liste(Wsk, n);
  35.  
  36. Pisz_Liste(Wsk);
  37. cout << "Lista po zmianach" << endl;
  38. Usun_Z_Listy(Wsk);
  39. Pisz_Liste(Wsk);
  40. Usun_Liste(Wsk);
  41. _getch();
  42. return 0;
  43. }
  44.  
  45.  
  46. void Do_Listy(INFO *Wsk, int L)
  47. {
  48. ELEMENT *Nowy;
  49. Nowy = new ELEMENT;
  50. if (Wsk->Glowa == NULL)
  51. {
  52. Wsk->Glowa = Nowy;
  53. Wsk->Ogon = Wsk->Glowa;
  54. }
  55. else
  56. {
  57. Wsk->Ogon->Nastepny = Nowy;
  58. Wsk->Ogon = Nowy;
  59. }
  60. Nowy->Wartosc = L;
  61. Nowy->Nastepny = NULL;
  62. }
  63.  
  64. void Tworz_Liste(INFO *Wsk, int n)
  65. {
  66. int i, L;
  67. Wsk->Glowa = NULL;
  68. Wsk->Ogon = NULL;
  69. for (i = 1; i <= n; i++)
  70. {
  71. L = 1 + rand() % 50;
  72. Do_Listy(Wsk, L);
  73. }
  74. }
  75.  
  76. void Pisz_Liste(INFO *Wsk)
  77. {
  78. ELEMENT *Biezacy;
  79. Biezacy = Wsk->Glowa;
  80. if (Wsk->Glowa == NULL)
  81. cout << "Lista jest pusta\n";
  82. else
  83. {
  84. cout << "\nOto lista:\n " << endl;
  85. while (Biezacy != NULL)
  86. {
  87. cout << Biezacy->Wartosc << endl;
  88. Biezacy = Biezacy->Nastepny;
  89. }
  90. }
  91. }
  92.  
  93. void Usun_Z_Listy(INFO *Wsk)
  94. {
  95. ELEMENT *Biezacy,
  96. *Przed,
  97. *Po;
  98. int licznik = 0;
  99. Przed = NULL;
  100. bool Usuniety;
  101. Usuniety = false;
  102. Biezacy = Wsk->Glowa;
  103.  
  104. if (Wsk->Glowa == NULL)
  105. cout << "\nLista jest pusta\n";
  106. else
  107. {
  108. do
  109. {
  110. if (licznik==3)
  111. {
  112.  
  113. for (int i = 0; i < 3; i++)
  114. {
  115.  
  116. Usuniety = true;
  117. if (Biezacy == Wsk->Glowa)
  118. {
  119. Wsk->Glowa = Wsk->Glowa->Nastepny;
  120. delete Biezacy;
  121. }
  122. else if (Biezacy == Wsk->Ogon)
  123. {
  124. Przed->Nastepny = NULL;
  125. delete Wsk->Ogon;
  126. Wsk->Ogon = Przed;
  127. }
  128. else
  129. {
  130. Po = Biezacy->Nastepny;
  131. delete Biezacy;
  132. Przed->Nastepny = Po;
  133. Biezacy = Po;
  134. }
  135. }
  136. }
  137. else
  138. {
  139. if (Biezacy != NULL)
  140. {
  141. Przed = Biezacy;
  142. Biezacy = Biezacy->Nastepny;
  143. licznik++;
  144. }
  145. }
  146. } while ((Biezacy != NULL) && (!Usuniety));
  147.  
  148. }
  149. }
  150.  
  151.  
  152.  
  153. void Usun_Liste(INFO *Wsk)
  154. {
  155. ELEMENT *Biezacy, *Usuniety;
  156. Biezacy = Wsk->Glowa;
  157. if (Wsk->Glowa == NULL)
  158. cout << "\nLista jest pusta";
  159. else {
  160. while (Biezacy != NULL)
  161. {
  162. Usuniety = Biezacy;
  163. Biezacy = Biezacy->Nastepny;
  164. delete Usuniety;
  165. }
  166. if (Biezacy == NULL)
  167. cout << "\nListe usunieto" << endl;
  168. }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement