Advertisement
Guest User

Untitled

a guest
May 15th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement