Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.67 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4.  
  5. class kulka
  6. {
  7. public:
  8. int value_1, value_2;
  9. kulka *next;
  10. kulka *left;
  11. kulka *right;
  12. kulka(int arg) //konstruktor
  13. {
  14. value_1=rand()%100;
  15. value_2=arg;
  16. next=NULL;
  17. left=NULL;
  18. right=NULL;
  19. }
  20. void show() //wyswietlanie
  21. {
  22. cout<<endl<<"Wartosc 1: "<<value_1<<" Wartosc 2: "<<value_2<<" ";
  23. if(next!=NULL) next->show();
  24. }
  25.  
  26. void show_tree()
  27. {
  28. if(left!=NULL) left->show_tree();
  29. else cout<<"v1="<<value_1<<" v2="<<value_2<<" ";
  30. if(right!=NULL) right->show_tree();
  31. else cout<<"v1="<<value_1<<" v2="<<value_2<<" ";
  32. }
  33.  
  34. //////////////////////////////////////////////////////////////////////////////////
  35. void add(kulka *nowa) //dodawanie na liste
  36. {
  37. if(next==NULL) next=nowa; //gdy nie ma nexta dodaje kulke na koniec
  38. else
  39. {
  40. if(nowa->value_1 < next->value_1)
  41. {
  42. nowa->next=next;
  43. next=nowa;
  44. }
  45. else next->add(nowa);
  46. }
  47. }
  48. //////////////////////////////////////////////////////////////////////////////////
  49. void add_tree(kulka *nowa) //dodawanie na drzewo
  50. {
  51. if(nowa->value_1 <= this->value_1)
  52. {
  53. if(this->left==NULL)
  54. {
  55. nowa->right=this;
  56. this->left=nowa;
  57. }
  58. else left->add_tree(nowa);
  59. }
  60. else
  61. {
  62. if(nowa->value_1 > this->value_1)
  63. {
  64. if(this->right==NULL)
  65. {
  66. nowa->left=this;
  67. this->right=nowa;
  68. }
  69. else right->add_tree(nowa);
  70. }
  71. }
  72. }
  73. };
  74.  
  75. int main()
  76. {
  77. kulka *nowa=NULL;
  78. kulka *lista=NULL;
  79. kulka *drzewo=NULL;
  80. int arg;
  81. cout<<endl<<"Podaj wartosc 2: "; //tworzenie pierwszej kulki
  82. cin>>arg;
  83. nowa=new kulka(arg);
  84. while(nowa->value_1 != nowa->value_2)
  85. {
  86. if(nowa->value_1 > nowa->value_2) //gdy val1 > val2 dodaje na liste
  87. {
  88. if(lista==NULL)
  89. {
  90. nowa->next=lista;
  91. lista=nowa;
  92. }
  93. else
  94. {
  95. if(nowa->value_1 < lista->value_1)
  96. {
  97. nowa->next=lista;
  98. lista=nowa;
  99. }
  100. else lista->add(nowa);
  101. }
  102. lista->show();
  103. }
  104.  
  105. else //gdy val1 < val2 dodaje na drzewo
  106. {
  107. if(drzewo==NULL) drzewo=nowa;
  108. else
  109. {
  110. if(nowa->value_1 <= drzewo->value_1)
  111. {
  112. if(drzewo->left==NULL)
  113. {
  114. nowa->right=drzewo;
  115. drzewo->left=nowa;
  116. }
  117. else drzewo->add_tree(nowa);
  118. }
  119. else
  120. {
  121. if(drzewo->right==NULL)
  122. {
  123. nowa->left=drzewo;
  124. drzewo->right=nowa;
  125. }
  126. else drzewo->add_tree(nowa);
  127. }
  128. }
  129. cout<<"Drzewo: "<<endl;
  130. // drzewo->show_tree();
  131. }
  132.  
  133. cout<<endl<<"Podaj wartosc 2: "; //tworzenie kolejnej kulki
  134. cin>>arg;
  135. nowa=new kulka(arg);
  136. }
  137. return 0;
  138. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement