prvo dijete-sljedeci brat


/ Published in: C++
Save to your folder(s)

Implementacija polja prvo dijete - sljedeci brat


Copy this code and paste it in your HTML
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct elem {
  5. char oznaka;
  6. int dijete,brat;
  7. };
  8. struct tr {
  9. elem polje[1000];
  10. int korijen;
  11. };
  12.  
  13. typedef struct tr tree;
  14. char pomoz='A';
  15.  
  16. tree *InitT(int x,tree *T){
  17.  
  18. for(int i=0;i<1000;i++){
  19. T->polje[i].oznaka= '0';
  20. T->polje[i].dijete= -1;
  21. T->polje[i].brat= -1;
  22. }
  23. T->polje[x].oznaka=pomoz++;
  24. T->korijen=x;
  25. return T;
  26. }
  27.  
  28. int ParentT(int n, tree *T){
  29. if (n==T->korijen){
  30. cout<<"Korijen nema roditelja!";
  31. return -1;
  32. }
  33. for(int i=0;i<1000;i++){
  34. if(T->polje[i].dijete==n) return i;
  35. if(T->polje[i].brat==n) return ParentT(i,T);
  36. }
  37. }
  38.  
  39. int FirstChildT(int n, tree *T){
  40. return T->polje[n].dijete;
  41. }
  42.  
  43. int NextSiblingT(int n, tree *T){
  44. return T->polje[n].brat;
  45. }
  46.  
  47. char LabelT(int n,tree *T){
  48. return T->polje[n].oznaka;
  49. }
  50.  
  51. int RootT(tree *T){
  52. return T->korijen;
  53. }
  54.  
  55. void CreateT(char x, int n,tree *T){
  56. if (T->polje[n].oznaka=='0') cout<<"Cvor ne postoji!"<<endl;
  57. else {
  58. if(T->polje[n].dijete==-1) T->polje[n].dijete=x;
  59. else if (T->polje[T->polje[n].dijete].brat==-1) T->polje[T->polje[n].dijete].brat=x;
  60. else{
  61. n = T->polje[n].dijete;
  62. while(T->polje[n].brat!=-1) n= T->polje[n].brat;
  63. T->polje[n].brat=x;
  64. }
  65. T->polje[x].dijete=-1;
  66. T->polje[x].brat=-1;
  67. T->polje[x].oznaka=pomoz++;
  68. }
  69. }
  70.  
  71. void ChangeLabelT(char x,int n, tree *T){
  72. if (T->polje[n].oznaka=='0') cout<<"Cvor ne postoji!"<<endl;
  73. else
  74. T->polje[n].oznaka=x;
  75. }
  76.  
  77. void DeleteT(int n, tree *T){
  78. if(FirstChildT(n,T)!=-1) DeleteT(T->polje[n].dijete,T);
  79. if(NextSiblingT(n,T)!=-1) DeleteT(T->polje[n].brat,T);
  80. T->polje[n].dijete=-1;
  81. T->polje[n].brat=-1;
  82. T->polje[n].oznaka = '0';
  83. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.