Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.28 KB | None | 0 0
  1. #include <iostream>
  2. #include<cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. class kulka
  7. {
  8. public:
  9. int wartosc;
  10. int numer;
  11. kulka* prawa=NULL;
  12. kulka *lewa=NULL;
  13. kulka* next=NULL;
  14.  
  15. kulka( int nr)
  16. {
  17. numer=nr;
  18. wartosc=rand()%100;
  19. }
  20.  
  21. void lista(kulka* nowa)
  22. {
  23. if(nowa->wartosc < next-> wartosc)
  24. {
  25. if(next)
  26. {
  27. nowa->next=next;
  28. next=nowa;
  29. }
  30. else
  31. next->lista(nowa);
  32. }
  33. else
  34. {
  35. next=nowa;
  36. }
  37.  
  38. }
  39.  
  40. void show_lista()
  41. {
  42. cout<<"numer :"<<numer<<" "<<wartosc<<endl;
  43. if(next)
  44. next->show_lista();
  45. }
  46.  
  47. void show_lista_rosnaco()
  48. {
  49. if(next)
  50. next->show_lista();
  51. cout<<"numer :"<<numer<<" "<<wartosc<<endl;
  52.  
  53. }
  54.  
  55. int zliczenie(int &suma)
  56. {
  57. suma=suma+wartosc;
  58. if(next)
  59. next->zliczanie(suma);
  60.  
  61. return suma;
  62. }
  63.  
  64.  
  65. void drzewo(kulka *nowa)
  66. {
  67. if(nowa-> wartosc < wartosc)
  68. {
  69. if(lewa)
  70. {
  71. lewa->drzewo(nowa);
  72. }
  73. else
  74. lewa=nowa;
  75.  
  76. }
  77. else
  78. {
  79. if(prawa)
  80. {
  81. prawa->drzewo(nowa);
  82. }
  83. else
  84. prawa=nowa;
  85. }
  86. }
  87.  
  88. void show_drzewo()
  89. {
  90. if(lewa)
  91. lewa->show_drzewo();
  92.  
  93. cout<<"numer: "<<numer<<" "<<wartosc<<endl;
  94.  
  95. if(prawa)
  96. prawa->show_drzewo();
  97. }
  98.  
  99.  
  100. };
  101.  
  102.  
  103. int main()
  104. {
  105. kulka*root_p=NULL;
  106. kulka*root_np=NULL;
  107. kulka*root=NULL;
  108.  
  109. for(int i=0 i<30; i++)
  110. {
  111. kulka *nowa=new kulka(i);
  112.  
  113. if (root==NULL)
  114. {
  115. root=nowa;
  116. }
  117. else
  118. {
  119.  
  120. if(nowa->wartosc < root-> wartosc)
  121. {
  122. nowa->next=root;
  123. root=nowa;
  124. }
  125. else
  126. root->lista(nowa);
  127.  
  128. }
  129. }
  130.  
  131.  
  132. cout<<"cala lista malejaco: "<<endl;
  133. root->show_lista();
  134. cout<<endl;
  135.  
  136. cout<<"cala lista rosnaco: "<<endl;
  137. root->show_lista_rosnaco();
  138. cout<<endl;
  139.  
  140.  
  141. // dodawanie lista parzysta i nieparzytsa
  142.  
  143.  
  144. kulka*pom=root;
  145.  
  146. while(roo->next)
  147. {
  148. pom=root;
  149. pom->next=NULL;
  150. if(pom->wartosc%2==0)
  151. {
  152. if(root_p==NULL)
  153. root_p=pom;
  154. else
  155. root_p->lista(pom);
  156. }
  157. else
  158. {
  159. if(root_np==NULL)
  160. root_np=pom;
  161. else
  162. root_np->lista(pom);
  163. }
  164.  
  165. }
  166.  
  167. if(root->wartosc%2==0)
  168. root_p->lista(root);
  169. else
  170. root_np->lista(root);
  171.  
  172.  
  173. cout<<"lista parzytsa malejaco"<<endl;
  174. root_p->show_lista();
  175. cout<<endl;
  176.  
  177. cout<<"lista parzytsa rosnaco"<<endl;
  178. root_p->show_lista_rosnaco();
  179. cout<<endl;
  180.  
  181.  
  182.  
  183. cout<<"lista nieparzytsa malejaco"<<endl;
  184. root_np->show_lista();
  185. cout<<endl;
  186.  
  187. cout<<"lista nieparzytsa rosnaco"<<endl;
  188. root_np->show_lista_rosnaco();
  189. cout<<endl;
  190.  
  191.  
  192.  
  193. int sum=0;
  194.  
  195. cout << "suma wartosci listy nieparzystej" << endl;
  196. cout << root_np->zliczanie(sum);
  197.  
  198. cout << endl;
  199.  
  200. cout << "suma wartosci calej listy" << endl;
  201. cout << root_p->zliczanie(sum);
  202.  
  203. cout << endl;
  204.  
  205. //drzewo z listy parzystej
  206.  
  207. kulka *pom_drzewo1=NULL;
  208. kulka *root_drzewo=NULL;
  209.  
  210. while(root_p->next)
  211. {
  212. pom_drzewo1=root_p;
  213. root_p=root_p->next;
  214. pom_drzewo1->next=NULL;
  215. if(root_drzewo==NULL)
  216. root_drzewo=pom_drzewo1;
  217. else
  218. root_drzewo->drzewo(pom_drzewo1);
  219. }
  220.  
  221. if(root_p)
  222. root_drzewo->drzewo(root_p);
  223.  
  224. cout << "drzewo z listy parzystej" << endl;
  225. root_drzewo->show_drzewo();
  226.  
  227. cout << endl;
  228.  
  229. //drzewa z dwoch list
  230.  
  231. kulka *pom_drzewo2=NULL;
  232.  
  233. while(root_np->next)
  234. {
  235. pom_drzewo2=root_np;
  236. root_np=root_np->next;
  237. pom_drzewo2->next=NULL;
  238. root_drzewo->drzewo(pom_drzewo2);
  239. }
  240.  
  241. if(root_np)
  242. root_drzewo->drzewo(root_np);
  243.  
  244. cout << "drzewo z obu list" << endl;
  245. root_drzewo->show_drzewo();
  246.  
  247.  
  248. return 0;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement