Advertisement
luk_per

zad_4_poprawione

Jan 30th, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.53 KB | None | 0 0
  1. /*  4. Z 200 kulek o losowej wartosci (0-100) przygotowac niesortowana liste jednokierunkowa.
  2. Z listy usunac kulki o powtarzajacych sie wartosciach.
  3. Wyswietlic przed i po usuwaniu. */
  4. #include <iostream>
  5. #include<cstdlib>
  6.  
  7. using namespace std;
  8.  
  9. int licznik=0;
  10. int licznik2=0;
  11.  
  12. class Kulka
  13. {
  14. public:
  15.     int v;
  16.     Kulka *next;
  17.  
  18.     Kulka()
  19.     {
  20.         v=rand()%100;
  21.         next=NULL;
  22.     }
  23.  
  24.     ~Kulka()
  25.     {
  26.         //cout<<"Usuwam "<<v<<endl;
  27.         licznik2++;
  28.     }
  29.  
  30.     void dodaj(Kulka *nowa)
  31.     {
  32.         if (next)
  33.             next->dodaj(nowa);
  34.         else
  35.             next=nowa;
  36.     }
  37.  
  38.     void show()
  39.     {
  40.         cout<<v<<" ";
  41.         licznik++;
  42.         if(next)
  43.             next->show();
  44.     }
  45.  
  46.  
  47. } ;
  48.  
  49.  
  50. int main()
  51. {
  52.  
  53.     Kulka *root=new Kulka();
  54.     Kulka *nowa=NULL;
  55.     Kulka *check=root;
  56.     Kulka *check2=root;
  57.     Kulka *temp=NULL;
  58.     Kulka *spy=NULL;
  59.     Kulka *bin=NULL;
  60.     int s;
  61.  
  62.  
  63.     for (int i=0; i<1999; i++)
  64.     {
  65.         nowa=new Kulka();
  66.         root->dodaj(nowa);
  67.     }
  68.     root->show();
  69.     cout<<endl<<"Liczba elementow: "<<licznik<<endl;
  70.     licznik=0;
  71.  
  72.     while(check->next)
  73.     {
  74.         spy=check;
  75.         s=check->v;
  76.         while(spy->next)
  77.         {
  78.             if(spy->next->v==s)
  79.             {
  80.                 bin=spy->next;
  81.                 if(spy->next->next)
  82.                 {
  83.                     spy->next=spy->next->next;
  84.                     delete bin;
  85.                 }
  86.                 else
  87.                 {
  88.                     delete bin;
  89.                     spy->next=NULL;
  90.                     break;
  91.                 }
  92.             }
  93.             else
  94.                 spy=spy->next;
  95.         }
  96.         if (check->next)
  97.             check=check->next;
  98.     }
  99.  
  100.     for(int i=0; i<=1999; i++)
  101.     {
  102.  
  103.         if (root->v>root->next->v)
  104.         {
  105.             temp=root->next;
  106.             root->next=root->next->next;
  107.             temp->next=root;
  108.             root=temp;
  109.         }
  110.  
  111.         while(check2->next->next)
  112.         {
  113.  
  114.             if (check2->next->v>check2->next->next->v)
  115.             {
  116.                 temp=check2->next->next;
  117.                 check2->next->next=temp->next;
  118.                 temp->next=check2->next;
  119.                 check2->next=temp;
  120.             }
  121.  
  122.             else
  123.                 check2=check2->next;
  124.         }
  125.         check2=root;
  126.     }
  127.  
  128.     root->show();
  129.     cout<<endl<<"Liczba elementow: "<<licznik<<endl<<"Usunieto: "<<licznik2<<endl;
  130.     cout<<"Suma: "<<licznik+licznik2<<endl;
  131.  
  132.  
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement