SHARE
TWEET

Untitled

a guest May 15th, 2019 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. struct element{
  7.     int liczba;
  8.     element* next;
  9. };
  10.  
  11. struct lista{
  12.     element *head;
  13.     element *tail;
  14.     int liczba_el;
  15. };
  16.  
  17. bool isEmpty(lista l){
  18.    if(l.tail==nullptr) return 1;
  19.         else return 0;
  20. }
  21.  
  22. void add_first(lista &l){
  23.     element* el=new element;
  24.     int x;
  25.     cout<<"Jaki element chcesz dodac? ";
  26.     cin>>x;
  27.     el->liczba=x;
  28.     el->next=l.head;
  29.     l.head=el;
  30.     if(l.tail==nullptr) l.tail=el;
  31.     l.liczba_el++;
  32. }
  33.  
  34. void add_last(lista &l){
  35.     element *el=new element();
  36.     int x;
  37.     cout<<"Jaki element chcesz dodac? ";
  38.     cin>>x;
  39.     el->liczba=x;
  40.     el->next=nullptr;
  41.  
  42.     if(l.tail!=nullptr) l.tail->next=el;
  43.     l.tail=el;
  44.     if(l.head==nullptr) l.head=el;
  45.     l.liczba_el++;
  46. }
  47.  
  48. void add_pos(lista &l,int pos){
  49.     if(pos>l.liczba_el+1)cout<<"Nie mozna wstawic elementu na te pozycje"<<endl;
  50.     else if(pos==l.liczba_el+1) add_last(l);
  51.         else if(pos==1) add_first(l);
  52.         else {
  53.             element* el=new element;
  54.             int x;
  55.             cout<<"Jaki element chcesz dodac? ";
  56.             cin>>x;
  57.             el->liczba=x;
  58.             element *temp=l.head;
  59.  
  60.             for(int i=1; i<pos-1;i++) temp=temp->next;
  61.  
  62.             el->next=temp->next;
  63.             temp->next=el;
  64.             l.liczba_el++;
  65.             }
  66. }
  67.  
  68. void delete_first(lista &l){
  69.     if(isEmpty(l)==1) cout<<"Kolejka juz jest pusta"<<endl;
  70.         else {
  71.             element* temp=l.head;
  72.             l.head=l.head->next;
  73.             delete temp;
  74.             if(l.head==nullptr) l.tail=nullptr;
  75.             l.liczba_el--;
  76.             }
  77. }
  78.  
  79. void delete_last(lista &l){
  80.     if(isEmpty(l)==1) cout<<"Kolejka juz jest pusta"<<endl;
  81.         else {
  82.     element* temp=l.tail;
  83.     if(l.liczba_el==1){
  84.         l.tail=nullptr;
  85.         l.head=nullptr;
  86.     }
  87.     else {
  88.         element* bef_temp=l.head;
  89.         for(int i=1; i<l.liczba_el-1;i++) bef_temp=bef_temp->next;
  90.  
  91.         l.tail=bef_temp;
  92.         l.tail->next=nullptr;
  93.         }
  94.     delete temp;
  95.     l.liczba_el--;
  96.     }
  97. }
  98.  
  99. void delete_pos(lista &l,int pos){
  100.     if(pos>l.liczba_el) cout<<"Nie ma elementu na tej pozycji"<<endl;
  101.         else if(pos==1) delete_first(l);
  102.             else if(pos==l.liczba_el+1) delete_last(l);
  103.         else {
  104.             element* temp=l.head;
  105.             for(int i=1;i<pos-1;i++) temp=temp->next;
  106.  
  107.             element* temp_us=temp->next;
  108.             temp->next=temp_us->next;
  109.             delete temp_us;
  110.             l.liczba_el--;
  111.     }
  112. }
  113.  
  114. void get_first(lista l){
  115.     if(isEmpty(l)==1) cout<<"Lista jest pusta"<<endl;
  116.             else  cout<<l.head->liczba;
  117. }
  118.  
  119. void get_last(lista l){
  120.     if(isEmpty(l)==1) cout<<"Lista jest pusta"<<endl;
  121.             else  cout<<l.tail->liczba;
  122. }
  123.  
  124. void medium(lista l){
  125.     if(isEmpty(l)==1) cout<<"Lista jest pusta"<<endl;
  126.             else  {int suma=0;
  127.                     element* temp=l.head;
  128.                 for(int i=1; i<=l.liczba_el; i++){
  129.                     suma=suma+temp->liczba;
  130.                     temp=temp->next;
  131.                 }
  132.                 cout<<"Srednia arytmetyczna liczb w liscie to: "<<suma/l.liczba_el<<endl;
  133.             }
  134.  
  135. }
  136. void show(lista l){
  137.      if(isEmpty(l)==1) cout<<"Lista jest pusta"<<endl;
  138.             else  {
  139.                     element* temp=l.head;
  140.                 for(int i=1; i<=l.liczba_el; i++){
  141.                     cout<<temp->liczba<<" ";
  142.                     temp=temp->next;
  143.                 }
  144.             }
  145. }
  146. void delete_all(lista &l){
  147.     while(l.tail!=nullptr){
  148.         element* temp=l.head;
  149.             l.head=l.head->next;
  150.             delete temp;
  151.             if(l.head==nullptr) l.tail=nullptr;
  152.             l.liczba_el--;
  153.         }
  154. }
  155.  
  156. int main(){
  157.     lista l;
  158.     l.head=nullptr;
  159.     l.tail=nullptr;
  160.     l.liczba_el=0;
  161.     int p;
  162.     int znak;
  163.     for(;;){
  164.         cout<<"1. Empty"<<endl<<"2. add_first"<<endl<<"3. add_last"<<endl<<"4. add_pos"<<endl<<"5. delete_first"<<endl<<"6. delete_last"<<endl<<"7. delete_pos"<<endl<<"8. get_first"<<endl<<"9. get_last"<<endl<<"10. medium"<<endl<<"11. show"<<endl<<"12. delete_all"<<endl<<"13. Wyjscie"<<endl;
  165.         cout<<"Wybierz zadanie"<<endl;
  166.         cin>>znak;
  167.         switch(znak){
  168.             case 1:{if(isEmpty(l)==1) cout<<"Lista jest pusta"<<endl;
  169.                         else cout<<"Lista nie jest pusta"<<endl;
  170.                 break;}
  171.             case 2:{add_first(l);
  172.                  break;}
  173.             case 3:{add_last(l);
  174.                 break;}
  175.             case 4:{cout<<"Na jaka pozycje chcesz wstawic element? ";
  176.                     cin>>p;
  177.                     add_pos(l,p);
  178.                 break;}
  179.             case 5: {delete_first(l);
  180.                 break;}
  181.             case 6: {delete_last(l);
  182.                 break;}
  183.             case 7:{cout<<"Z jakiej pozycji chcesz usunac element? ";
  184.                     cin>>p;
  185.                     delete_pos(l,p);
  186.                 break;}
  187.             case 8:{get_first(l);
  188.                 break;}
  189.             case 9:{get_last(l);
  190.                 break;}
  191.             case 10:{medium(l);
  192.                 break;}
  193.             case 11:{show(l);
  194.                 break;}
  195.             case 12:{delete_all(l);
  196.                 break;}
  197.             case 13: exit(0);
  198.             default :cout<<"Nie ma takiej opcji"<<endl;
  199.  
  200.         }
  201.         fflush(stdin);
  202.         if(getchar()) system("cls");
  203.     }
  204.  
  205. return 0;
  206. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top