Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- plik.h
- #ifndef BIB_H
- #define BIB_H
- #include<iostream>
- struct Sznur
- {
- private:
- struct Box
- {
- int dane;
- Box* nast;
- Box(int _dane=0, Box* _adres=NULL);
- ~Box();
- };
- //pola sznura:
- Box* pocz;//konieczne
- Box* ogon;//przydatne- adres ostatniego wezla
- int ileJest=0;//przydatne
- public:
- void wstaw(int a);
- void wypisz();
- void usunFragmenty(int N);
- Sznur();
- ~Sznur();
- };
- #endif // BIB_H
- --------------------------------------------------------------------------------------
- plik.cpp
- #include "bib.h"
- #include<iostream>
- using namespace std;
- Sznur::Sznur()
- {
- pocz=NULL;
- }
- Sznur::~Sznur()
- {
- }
- Sznur::Box::Box(int _dane, Box* _adres)
- {
- dane=_dane;
- nast=_adres;
- }
- Sznur::Box::~Box()
- {
- cout<<"Usunalem wezel!";
- }
- void Sznur::wstaw(int a)
- {
- Box* nowy=new Box(a);
- if(pocz==NULL)
- {
- pocz=nowy;
- }
- else
- {
- (*ogon).nast=nowy;
- }
- ogon=nowy;
- ileJest++;
- }
- void Sznur::wypisz()
- {
- if(pocz==NULL)
- return;
- else
- {
- Box* biegacz=pocz;
- while(biegacz!=NULL)
- {
- cout<<biegacz->dane;
- biegacz=biegacz->nast;
- }
- }
- }
- void Sznur::usunFragmenty(int N)
- {
- if(ileJest<N)
- return;
- else
- {
- Box* PWG=pocz;//PWG to pierwszy w grupie wezlow z tymi samymi danymi
- Box* zliczacz=PWG;//zliczacz ma sluzyc do zliczania ile jest takich wezlow
- Box* przedGrupa=NULL;
- while(PWG!=NULL)
- {
- int dlugosc_fragmentu=0;
- while(zliczacz!=NULL&&zliczacz->dane==PWG->dane)
- {
- dlugosc_fragmentu++;
- zliczacz=zliczacz->nast;
- }
- if(dlugosc_fragmentu>=N)
- {
- Box* killer=PWG;
- PWG=(*PWG).nast;
- delete killer;
- }
- else
- {
- for(int i=dlugosc_fragmentu; i>0; i--){
- przedGrupa=PWG;
- PWG=PWG->nast;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement