Advertisement
Guest User

Untitled

a guest
Apr 25th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. plik.h
  2. #ifndef BIB_H
  3. #define BIB_H
  4. #include<iostream>
  5. struct Sznur
  6. {
  7. private:
  8. struct Box
  9. {
  10. int dane;
  11. Box* nast;
  12. Box(int _dane=0, Box* _adres=NULL);
  13. ~Box();
  14. };
  15. //pola sznura:
  16. Box* pocz;//konieczne
  17. Box* ogon;//przydatne- adres ostatniego wezla
  18. int ileJest=0;//przydatne
  19. public:
  20. void wstaw(int a);
  21. void wypisz();
  22. void usunFragmenty(int N);
  23. Sznur();
  24. ~Sznur();
  25. };
  26. #endif // BIB_H
  27.  
  28. --------------------------------------------------------------------------------------
  29. plik.cpp
  30. #include "bib.h"
  31. #include<iostream>
  32. using namespace std;
  33. Sznur::Sznur()
  34. {
  35. pocz=NULL;
  36. }
  37. Sznur::~Sznur()
  38. {
  39.  
  40. }
  41. Sznur::Box::Box(int _dane, Box* _adres)
  42. {
  43. dane=_dane;
  44. nast=_adres;
  45. }
  46. Sznur::Box::~Box()
  47. {
  48. cout<<"Usunalem wezel!";
  49. }
  50. void Sznur::wstaw(int a)
  51. {
  52. Box* nowy=new Box(a);
  53. if(pocz==NULL)
  54. {
  55. pocz=nowy;
  56. }
  57. else
  58. {
  59. (*ogon).nast=nowy;
  60. }
  61. ogon=nowy;
  62. ileJest++;
  63. }
  64. void Sznur::wypisz()
  65. {
  66. if(pocz==NULL)
  67. return;
  68. else
  69. {
  70. Box* biegacz=pocz;
  71. while(biegacz!=NULL)
  72. {
  73. cout<<biegacz->dane;
  74. biegacz=biegacz->nast;
  75. }
  76. }
  77. }
  78. void Sznur::usunFragmenty(int N)
  79. {
  80. if(ileJest<N)
  81. return;
  82. else
  83. {
  84. Box* PWG=pocz;//PWG to pierwszy w grupie wezlow z tymi samymi danymi
  85. Box* zliczacz=PWG;//zliczacz ma sluzyc do zliczania ile jest takich wezlow
  86. Box* przedGrupa=NULL;
  87. while(PWG!=NULL)
  88. {
  89. int dlugosc_fragmentu=0;
  90. while(zliczacz!=NULL&&zliczacz->dane==PWG->dane)
  91. {
  92. dlugosc_fragmentu++;
  93. zliczacz=zliczacz->nast;
  94. }
  95. if(dlugosc_fragmentu>=N)
  96. {
  97.  
  98. Box* killer=PWG;
  99. PWG=(*PWG).nast;
  100. delete killer;
  101.  
  102.  
  103. }
  104. else
  105. {
  106. for(int i=dlugosc_fragmentu; i>0; i--){
  107. przedGrupa=PWG;
  108. PWG=PWG->nast;
  109. }
  110. }
  111. }
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement