Posted By

nmajcen on 01/06/14


Tagged

4 Strukture podataka polje zadatak stablo opcenito


Versions (?)

SP Z4 Opcenito stablo


 / Published in: C++
 

Programski kod za opcenito stablo u C++

  1. using namespace std;
  2.  
  3. struct elementStabla{
  4. char labela;
  5. int prvoDijete, sljedeciBrat;
  6. };
  7.  
  8. struct stablo{
  9. struct elementStabla element[1000];
  10. int glavniKorijen;
  11. };
  12.  
  13. typedef int cvor;
  14.  
  15. cvor ParentT(int n, stablo *T){
  16. for(int i = 0; i < 1000; i++){
  17. if(T->element[i].prvoDijete == n)
  18. return i;
  19. if(T->element[i].sljedeciBrat == n)
  20. return ParentT(i,T);
  21. } // for
  22. } // ParentT(n,T)
  23.  
  24. cvor FirstChildT(int n, stablo *T){
  25. return T->element[n].prvoDijete;
  26. } // FirstChildT(n,T)
  27.  
  28. cvor NextSiblingT(int n, stablo *T){
  29. return T->element[n].sljedeciBrat;
  30. } // NextSiblingT(n,T)
  31.  
  32. char LabelT(int n, stablo *T){
  33. return T->element[n].labela;
  34. } // LabelT(n,T)
  35.  
  36. char RootT(stablo *T){
  37. return T->glavniKorijen;
  38. } // RootT(T)
  39.  
  40. void CreateT(int x, int n, stablo *T){
  41. if(T->element[n].labela == '-'){
  42. cout << "Uneseni cvor ne postoji." << endl;
  43. } // if
  44. else if((int)T->element[x].labela >= 65 && (int)T->element[x].labela <= 122){
  45. cout << "Ovaj cvor je vec zauzet." << endl;
  46. } // else if
  47. else {
  48. int dijete = T->element[n].prvoDijete;
  49. if (dijete == -1){
  50. T->element[n].prvoDijete = x;
  51. } // if
  52. else if (T->element[dijete].sljedeciBrat == -1){
  53. T->element[dijete].sljedeciBrat = x;
  54. } // else if
  55. else {
  56. int brat = T->element[dijete].sljedeciBrat;
  57. int indeks;
  58. while(brat != -1){
  59. indeks = brat;
  60. brat = T->element[brat].sljedeciBrat;
  61. } // while
  62. T->element[indeks].sljedeciBrat = x;
  63. } // else
  64. } // else
  65. } // CreateT(x,n,T)
  66.  
  67. void ChangeLabelT(char x, int n, stablo *T){
  68. T->element[n].labela = x;
  69. } // ChangeLabelT(x,n,T)
  70.  
  71. void DeleteT(int n, stablo *T){
  72. if(T->element[n].prvoDijete != -1)
  73. DeleteT(T->element[n].prvoDijete, T);
  74. if(T->element[n].sljedeciBrat != -1)
  75. DeleteT(T->element[n].sljedeciBrat, T);
  76. cout << "Izbrisan cvor " << T->element[n].labela << "." << endl;
  77. T->element[n].sljedeciBrat = -1;
  78. T->element[n].prvoDijete = -1;
  79. } // DeleteT(n,T)
  80.  
  81. void InitT(int x, stablo *T){
  82. T->glavniKorijen = x;
  83. for(int i = 0; i < 1000; i++){
  84. T->element[i].labela = '-';
  85. T->element[i].prvoDijete = -1;
  86. T->element[i].sljedeciBrat = -1;
  87. } // for
  88. } // InitT(x,T)

Report this snippet  

You need to login to post a comment.