Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* 4. Z 200 kulek o losowej wartosci (0-100) przygotowac niesortowana liste jednokierunkowa.
- Z listy usunac kulki o powtarzajacych sie wartosciach.
- Wyswietlic przed i po usuwaniu. */
- #include <iostream>
- #include<cstdlib>
- using namespace std;
- int licznik=0;
- int licznik2=0;
- class Kulka
- {
- public:
- int v;
- Kulka *next;
- Kulka()
- {
- v=rand()%100;
- next=NULL;
- }
- ~Kulka()
- {
- //cout<<"Usuwam "<<v<<endl;
- licznik2++;
- }
- void dodaj(Kulka *nowa)
- {
- if (next)
- next->dodaj(nowa);
- else
- next=nowa;
- }
- void show()
- {
- cout<<v<<" ";
- licznik++;
- if(next)
- next->show();
- }
- } ;
- int main()
- {
- Kulka *root=new Kulka();
- Kulka *nowa=NULL;
- Kulka *check=root;
- Kulka *check2=root;
- Kulka *temp=NULL;
- Kulka *spy=NULL;
- Kulka *bin=NULL;
- int s;
- for (int i=0; i<1999; i++)
- {
- nowa=new Kulka();
- root->dodaj(nowa);
- }
- root->show();
- cout<<endl<<"Liczba elementow: "<<licznik<<endl;
- licznik=0;
- while(check->next)
- {
- spy=check;
- s=check->v;
- while(spy->next)
- {
- if(spy->next->v==s)
- {
- bin=spy->next;
- if(spy->next->next)
- {
- spy->next=spy->next->next;
- delete bin;
- }
- else
- {
- delete bin;
- spy->next=NULL;
- break;
- }
- }
- else
- spy=spy->next;
- }
- if (check->next)
- check=check->next;
- }
- for(int i=0; i<=1999; i++)
- {
- if (root->v>root->next->v)
- {
- temp=root->next;
- root->next=root->next->next;
- temp->next=root;
- root=temp;
- }
- while(check2->next->next)
- {
- if (check2->next->v>check2->next->next->v)
- {
- temp=check2->next->next;
- check2->next->next=temp->next;
- temp->next=check2->next;
- check2->next=temp;
- }
- else
- check2=check2->next;
- }
- check2=root;
- }
- root->show();
- cout<<endl<<"Liczba elementow: "<<licznik<<endl<<"Usunieto: "<<licznik2<<endl;
- cout<<"Suma: "<<licznik+licznik2<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement