Advertisement
F22

Untitled

F22
Jan 22nd, 2014
1,336
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //TWORZENIE.EXE
  2. //Wczytuj calkowite poki nie napiszesz 0, drukuj liste i usun.
  3. #include <iostream>
  4. using namespace std;
  5. struct SLista
  6. {
  7.     int dane;
  8.     SLista *next;
  9. };
  10. void stworzenie(SLista *&glowa)
  11. {
  12.     SLista *akt, *ogon; //Deklaruje ogon i akt bo tylko tutaj bede tego uzywal.
  13.     glowa=new SLista; //Tworzę nowy element typu SLista i głowa na niego wskazuje. [1]
  14.     cout<<"Podawaj liczby calkowite, 0 konczy liste:"<<endl; // [1]
  15.     cin>>glowa->dane; //Wpisuje w dane liczbe. [1]
  16.     if(glowa->dane==0) //Warunek, jak w dane dam zero to wywala funkcje. [1]
  17.     {
  18.         cout<<"Koniec."; // [1]
  19.         glowa->next=NULL; //Wskaznik glowa-next wskazuje na NULL, zeby wiadomo bylo ze to otatni element listy. [1]
  20.         return; //Wywala do maina. [1]
  21.     }
  22.     akt=glowa; //Wskaznik akt wskazuje tam gdzie wskaznik glowa (czyli na glowe) i wejdziemy w petle. [2]
  23.     while(akt->dane!=0) //Poki nie wpiszesz zero to: [2]
  24.     {
  25.     ogon=akt; //Wskaznik ogon wskazuje tam gdzie wskaznik akt (ogon wskazuje na przedostatni element gdy stworzymy akt). [2][5]
  26.     akt=new SLista; //Tworze ostatni element mojej listy i wskazuje na niego akt. [3][6]
  27.     cin>>akt->dane; //Wpisuje cos w pole dane w akt.[3][6]
  28.     akt->next=NULL; //Wskaznik akt-next wskazuje na NULL. [3][6]
  29.     ogon->next=akt; //Wskaznik ogon-next wskazuje na ostatni element (akt). [4][7]
  30.     }
  31. }
  32. void drukuj(SLista *glowa) //tutaj nie mozna tego "&" bo wszystko na nic i po co zyc.
  33. {
  34.     cout<<"Drukuje: "<<endl;
  35.     while(glowa!=NULL)
  36.     {
  37.     cout<<glowa->dane<<'\t'; //[1]Wyswietla z 1. komorki. [2]Wyswietla dane z tego co wskazuje next z glowy (czyli nastepna komorka)
  38.     glowa=glowa->next; //[1]Glowa staje sie nextem z glowy. [2]Przechodzi dalej.
  39.     }
  40. }
  41. void usunall(SLista *&glowa)
  42. {
  43.     SLista *tmp; //pomocnicza w ktorej beda elemnty od poczatku usuwane.
  44.     while(glowa!=NULL)//poki nie dojdziemy do konca.
  45.     {
  46.         tmp=glowa; //[1]pomocnicza stanie sie 1. elementem. [2]Pomocnicza staje sie kolejnym elementem.(n)
  47.         glowa=glowa->next; //[1]Glowa staje sie nextem z glowy. [2]Glowa staje sie kolejnym.(n+1)
  48.         delete tmp; //[1]usuwamy 1. element. [2]Usuwamy tmp (n)
  49.     }
  50. }
  51. void usunele(SLista *&glowa)
  52. {
  53.     cout<<endl<<"Podaj nr. elemntu do usuniecia."<<endl;
  54.     int licznik;
  55.     cin>>licznik;
  56.     SLista *tmp=glowa, *tmp2;
  57.     if(licznik==1)
  58.     {
  59.         glowa=glowa->next;
  60.         delete tmp;
  61.     }
  62.     else
  63.     {
  64.     while(licznik>2)  //Ta petla po to zeby znalezc element przed usuwanym.
  65.     {
  66.         tmp2=tmp;
  67.         tmp=tmp->next;
  68.         licznik--;
  69.     }
  70.     tmp2=tmp->next; // W tmp bedzie element ktory mam usnac.
  71.     tmp->next=tmp2->next; //Wskaznik wczesniejszgo od usunietego elementu wskazuje na nastpepny po usunietym.
  72.     delete tmp2;
  73.     }//Usuwam to co mam usunac, lol.
  74. }
  75. void dodaj(SLista *&glowa)
  76. {
  77.     int licznik, y;
  78.     cout<<endl<<"Gdzie chcesz cos dodac?"<<endl;
  79.     cin>>licznik;
  80.     cout<<endl<<"Co chcesz dodac?"<<endl;
  81.     cin>>y;
  82.     SLista *tmp=glowa,*tmp2;
  83.     if(licznik==0)
  84.     {
  85.         tmp=new SLista;
  86.         tmp->dane=y;
  87.         tmp->next=glowa;
  88.         glowa=tmp;
  89.     }
  90.     else
  91.     {
  92.         while(licznik>1)
  93.         {
  94.             tmp=tmp->next;
  95.             licznik--;
  96.         }
  97.         tmp2=new SLista;
  98.         tmp2->dane=y;
  99.         tmp2->next=tmp->next;
  100.         tmp->next=tmp2;
  101.     }
  102.  
  103. }
  104. int main()
  105. {
  106.     SLista *glowa;
  107.     stworzenie(glowa);
  108.     drukuj(glowa);
  109.     usunele(glowa);
  110.     drukuj(glowa);
  111.     dodaj(glowa);
  112.     drukuj(glowa);
  113.     usunall(glowa);
  114. }
Advertisement
RAW Paste Data Copied
Advertisement