Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.85 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Lista{
  6. public:
  7. typedef unsigned int wartosc;
  8. private:
  9. struct element{
  10. wartosc wart;
  11. element * nastepny;
  12. element * poprzedni;
  13. };
  14. public:
  15. typedef element* pozycja;
  16. private:
  17. pozycja pierwszy;
  18. pozycja ostatni;
  19. wartosc size=0;
  20. public:
  21.  
  22. //KONSTRUKTOR
  23. Lista()
  24. {
  25. pierwszy=ostatni=NULL;
  26. }
  27. //DESTRUKTOR
  28. ~Lista()
  29. {
  30. pozycja pom;
  31. while(pierwszy!=NULL)
  32. {
  33. pom=pierwszy;
  34. pierwszy=pierwszy->nastepny;
  35. delete pom;
  36. }
  37. }
  38. //CZY PUSTA
  39. bool empty()
  40. {
  41. if(pierwszy==NULL)
  42. return true;
  43. else
  44. return false;
  45. }
  46. //WARTOSC PIERWSZEGO ELEMENTU
  47. wartosc front()
  48. {
  49. return pierwszy->wart;
  50. }
  51. //WARTOSC OSTATNIEGO ELEMENTU
  52. wartosc back()
  53. {
  54. return ostatni->wart;
  55. }
  56. //NOWA WARTOSC NA POCZATEK LISTY
  57. void push_front(wartosc w)
  58. {
  59. pozycja pom=new element;
  60. pom->wart=w;
  61. pom->nastepny=pierwszy;
  62. pom->poprzedni=NULL;
  63. pierwszy=pom;
  64. if(!ostatni)
  65. ostatni=pierwszy;
  66. size++;
  67. cout<<"Operacja Push_front "<<endl;
  68. }
  69. //NOWA WARTOSC NA KONIEC LISTY
  70. void push_back(wartosc w)
  71. {
  72. if(pierwszy==NULL)
  73. {
  74. push_front(w);
  75. }
  76. else
  77. {
  78. pozycja it=ostatni;
  79. it->nastepny=new element;
  80. it->nastepny->wart=w;
  81. it->nastepny->nastepny=NULL;
  82. it->nastepny->poprzedni=ostatni;
  83. ostatni=it->nastepny;
  84. size++;
  85. }
  86. cout<<"Operacja Push_back "<<endl;
  87. }
  88. //USUWA PIERWSZY ELEMENT LISTY
  89. void pop_front()
  90. {
  91. pozycja pom=pierwszy;
  92. if(pom->nastepny==NULL)
  93. {
  94. pierwszy=ostatni=NULL;
  95. size=0;
  96. }
  97. else
  98. {
  99. pierwszy=pierwszy->nastepny;
  100. pierwszy->poprzedni=NULL;
  101. size--;
  102. }
  103. delete pom;
  104. cout<<"Operacja pop_front "<<endl;
  105. }
  106. //USUWA OSTATNI ELEMENT LISTY
  107. void pop_back()
  108. {
  109. pozycja pom;
  110. if(ostatni)
  111. {
  112. pom=ostatni;
  113. if(pom==pierwszy)
  114. {
  115. pierwszy = ostatni = NULL;
  116. size=0;
  117. }
  118. else
  119. {
  120. ostatni=ostatni->poprzedni;
  121. ostatni->nastepny=NULL;
  122. size--;
  123. }
  124. cout<<"Operacja Push_back "<<endl;
  125. }
  126. delete pom;
  127. }
  128. //WYSWIETL
  129. void get()
  130. {
  131. pozycja temp=pierwszy;
  132. for(int i=0;i<size;i++)
  133. {
  134. cout<<temp->wart<<" ";
  135. temp = temp->nastepny;
  136. }
  137. }
  138. wartosc dlugosc()
  139. {
  140. return size;
  141. }
  142. };
  143.  
  144. int main()
  145. {
  146. unsigned int reka,N,i,K,U,Z,j=0,k=0;
  147. bool licz=false;
  148. Lista lewa;
  149. Lista prawa;
  150. cin>>N>>K>>U;
  151. int* tab = new int[U];
  152. for(i=0;i<U;i++)
  153. {
  154. cin>>tab[i];
  155. }
  156. cin>>Z;
  157.  
  158. int* tab2 = new int[Z];
  159.  
  160. for(i=0;i<Z;i++)
  161. {
  162. cin>>tab2[i];
  163. }
  164.  
  165. if(N%2==0)
  166. {
  167. for(i=1;i<=N/2;i++)
  168. {
  169. lewa.push_back(i);
  170. }
  171. for(i=N/2+1;i<=N;i++)
  172. {
  173. prawa.push_back(i);
  174. }
  175. }
  176. else
  177. {
  178. for(i=1;i<=N/2+1;i++)
  179. {
  180. lewa.push_back(i);
  181. }
  182. for(i=N/2+2;i<=N;i++)
  183. {
  184. prawa.push_back(i);
  185. }
  186. }
  187.  
  188.  
  189. for(i=1;i<=K;i++)
  190. {
  191. cout<<"Ilosc kul "<<lewa.dlugosc()+prawa.dlugosc()<<endl;
  192.  
  193. cout<<"wyswietl reke"<<endl;
  194. lewa.get();
  195. cout<<endl;
  196. prawa.get();
  197. cout<<endl;
  198.  
  199. if(i%2==0)
  200. {
  201. if(tab[j]==i)
  202. {
  203. cout<<"upuszcza pilke"<<endl;
  204. j++;
  205. }
  206. else
  207. {
  208. if(licz)
  209. {
  210. cout<<"lapie prawa"<<endl;
  211. prawa.push_back(reka);
  212. }
  213. else
  214. {
  215. cout<<"lapie lewa"<<endl;
  216. lewa.push_front(reka);
  217. }
  218. }
  219. }
  220. else
  221. {
  222. if(tab2[k]==i)
  223. {
  224. cout<<"zmiana reki"<<endl;
  225. if(licz==false)
  226. {
  227. licz=true;
  228. }
  229. else
  230. {
  231. licz=false;
  232. }
  233. }
  234.  
  235. if(licz)
  236. {
  237. cout<<"Wyrzuca z prawej"<<endl;
  238. reka=prawa.front();
  239. prawa.pop_front();
  240. licz=false;
  241. }
  242. else
  243. {
  244. cout<<"Wyrzuca z lewej"<<endl;
  245. reka=lewa.back();
  246. lewa.pop_back();
  247. licz=true;
  248. }
  249. }
  250. }
  251. cout<<lewa.dlugosc()+prawa.dlugosc();
  252. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement