Advertisement
Guest User

aa

a guest
Oct 24th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.06 KB | None | 0 0
  1. //
  2. // main.c
  3. // AA
  4. //
  5. // Created by Miruna on 22/10/16.
  6. // Copyright © 2016 Miruna. All rights reserved.
  7. //
  8.  
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. int k=0, chei[30], parinte[30];
  12.  
  13. void adaugare_radacina(int ch)
  14. {
  15. chei[k]=ch;
  16. parinte[k]=-1;
  17. k++;
  18. }
  19. void inserare_cheie(int ch, int par)
  20. {
  21. chei[k]=ch;
  22. parinte[k]=par;
  23. k++;
  24. }
  25. void afisare()
  26. {
  27. int i;
  28. printf("\n\nindex |");
  29. for(i=0;i<k;i++)
  30. printf("\t%d ",i);
  31. printf("\nchei |");
  32. for(i=0;i<k;i++)
  33. printf("\t%d ",chei[i]);
  34. printf("\nparinte |");
  35. for(i=0;i<k;i++)
  36. printf("\t%d ",parinte[i]);
  37. printf("\n\n");
  38. }
  39. int cauta_cheie(int ch)
  40. {
  41. int i,ok=1;
  42. for(i=0; i<k && ok ;i++)
  43. if(chei[i]==ch)
  44. ok=0;
  45. return ok;
  46. }
  47. void sterge_cheie(int ch)
  48. {
  49. int i,j,ok=1;
  50. for(i=0;i<k && ok;i++)
  51. if(chei[i]==ch)
  52. ok=0;
  53. if(ok==0)
  54. {
  55. for(j=i-1;j<k;j++)
  56. {
  57. chei[j]=chei[j+1];
  58. parinte[j]=parinte[j+1];
  59. }
  60. k--;
  61. }
  62. else
  63. printf("\n\n\tCheia dorita nu a fost gasita!\n");
  64.  
  65. }
  66.  
  67. int inaltime_arbore()
  68. {
  69. int i, nr=1;
  70. for(i=1;i<k;i++)
  71. if(parinte[i-1]!=parinte[i])
  72. nr++;
  73. return nr;
  74. }
  75.  
  76.  
  77. int grad_ardore()
  78. {
  79. int i,nr,max=1;
  80.  
  81. for(i=1;i<k;i++)
  82. {
  83. nr=1;
  84. while(parinte[i]==parinte[i+1] && i<k-1)
  85. {
  86. nr++;
  87. i++;
  88. }
  89.  
  90. if(nr>max)
  91. max=nr;
  92. }
  93. return max;
  94. }
  95.  
  96. int preordine (int i)
  97. {
  98. int j;
  99. if(i<k)
  100. {
  101.  
  102.  
  103.  
  104. printf("\t%d",chei[i]);
  105. for(j=i+1;j<k-1;j++)
  106. if(parinte[j]==parinte[j+1])
  107. preordine(i++);
  108. preordine(i+2);
  109.  
  110. }
  111.  
  112. return 0;
  113.  
  114. }
  115.  
  116.  
  117. int main(int argc, const char * argv[]) {
  118.  
  119. int opt, ch, par;
  120. do{
  121. printf("\n\t0.Iesire\n\t1.Inserare radacina\n\t2.Inserare cheie noua\n\t3.Cauta cheie\n\t4.Sterge cheie\n\t5.Parcurgeri\n\t6.Inaltimea arborelui\n\t7.Gradul arborelui\n\t8.Cel mai din stanga frate\n\t9.Cel mai din dreapta frate\n\t10.Numar de frati\n\t11.Afisare\n\n\n\t");
  122. scanf("%d",&opt);
  123. switch (opt) {
  124. case 0:
  125. break;
  126. case 1:
  127.  
  128. system("clear");
  129. printf("\n\tDati radacina: ");
  130. scanf("%d",&ch);
  131. adaugare_radacina(ch);
  132. break;
  133. case 2:
  134.  
  135. system("clear");
  136. printf("\n\tDati cheia: ");
  137. scanf("%d",&ch);
  138. printf("\n\tDati parintele: ");
  139. scanf("%d",&par);
  140. inserare_cheie(ch,par);
  141. break;
  142. case 3:
  143. system("clear");
  144. printf("\n\tDati cheia cautata: ");
  145. scanf("%d",&ch);
  146. if(cauta_cheie(ch)==0)
  147.  
  148. printf("\n\tCheia exista!");
  149. else
  150. printf("\n\tCheia nu exista!");
  151. break;
  152. case 4:
  153. system("clear");
  154. printf("Dati cheia care doriti sa fie stearsa: ");
  155. scanf("%d",&ch);
  156. sterge_cheie(ch);
  157. break;
  158. case 5:
  159. system("clear");
  160. preordine(0);
  161. break;
  162. case 6:
  163. system("clear");
  164. printf("Inaltimea este: %d",inaltime_arbore());
  165. break;
  166. case 7:
  167. system("clear");
  168. printf("Gradul este: %d",grad_ardore());
  169. break;
  170.  
  171. case 11:
  172.  
  173. system("clear");
  174. afisare();
  175. break;
  176. default: printf("Nu ati introdus o optiune valida!\n");
  177. break;
  178. }
  179. }while(opt!=0);
  180.  
  181. return 0;
  182. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement