Guest User

Untitled

a guest
Jul 23rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. //struktury zwierzaka:
  5. #define nmax 100
  6.  
  7. typedef struct REF {
  8. int a;
  9. REF* next;
  10. } ref;
  11.  
  12. typedef struct REF2 {
  13. int b;
  14. REF2 *left, *right;
  15. } ref2;
  16.  
  17. typedef ref t3[nmax];
  18.  
  19.  
  20. /* ------------- tu sa zadania ------------ */
  21.  
  22. int fp0_1(int n, t3 B) {
  23.  
  24. int dlugosc = 0;
  25. ref* wskaznik;
  26.  
  27. for(int i = 0; i < n; i++) {
  28. wskaznik = &B[i];
  29. while(wskaznik) {
  30. dlugosc += 1;
  31. wskaznik = wskaznik->next;
  32. }
  33. }
  34.  
  35. return dlugosc;
  36. }
  37.  
  38. void pp0_2(int x, ref* h) {
  39.  
  40. ref* wskaznik = h;
  41.  
  42. while(wskaznik) {
  43. wskaznik->a = x;
  44. wskaznik = wskaznik->next;
  45. }
  46. }
  47.  
  48. int fp0_3(int level, ref2* t) {
  49.  
  50. if(t == 0) return 0;
  51. if(level == 0) return t->b;
  52.  
  53. int suma = 0;
  54.  
  55. suma += fp0_3(level-1,t->left);
  56. suma += fp0_3(level-1,t->right);
  57.  
  58. return suma;
  59. }
  60.  
  61. //przyjmujemy, ze w BST te mniejsze elementy sa po prawej
  62. int pp0_4(ref2* t) {
  63.  
  64. ref2* wskaznik = t;
  65.  
  66. while(wskaznik->right) {
  67. wskaznik = wskaznik->right;
  68. }
  69.  
  70. return wskaznik->b;
  71. }
  72.  
  73. int fp0_5(ref2* t) {
  74.  
  75. if(!t->left && !t->right) return 1;
  76.  
  77. int a = 0,b = 0;
  78.  
  79. if(t->left) a = fp0_5(t->left);
  80. if(t->right) b = fp0_5(t->right);
  81.  
  82. if(a>=b)
  83. return a+1;
  84. else
  85. return b+1;
  86. }
  87.  
  88.  
  89. /* ------------ koneic zadan ----------- */
  90.  
  91.  
  92. //alokuje nowe ref2 zeby budowac altwo drzewa
  93. ref2* nref2(int x, ref2* r, ref2* l) {
  94. ref2* tmp = (ref2*)malloc(sizeof(ref2));
  95. tmp->b = x;
  96. tmp->right = r;
  97. tmp->left = l;
  98. return tmp;
  99. }
  100.  
  101.  
  102. //testy f-cji fp0_3, fp0_4, fp0_5 :
  103. int main() {
  104.  
  105. //testowe drzewko
  106. /*
  107. 5
  108. 3 7
  109. 2 4 6 .
  110. */
  111. ref2* test = nref2(5,
  112. nref2(3,
  113. nref2(2,0,0),
  114. nref2(4,0,0)
  115. ),
  116. nref2(7,
  117. nref2(6,0,0),
  118. 0
  119. )
  120. );
  121.  
  122. printf("fp0_5: %d == 3 ?\n", fp0_5(test));
  123. printf("pp0_4: %d == 2 ?\n", pp0_4(test));
  124. printf("fp0_3: %d == 12 ?\n", fp0_3(2,test));
  125.  
  126. return 0;
  127. }
Add Comment
Please, Sign In to add comment