prvo dijete sljedeci brat


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

strukture podataka


Copy this code and paste it in your HTML
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct elem {
  5. int label, firstchild, nextsibling;
  6. };
  7.  
  8. struct t {
  9. elem elementi[10000];
  10. int first;
  11. };
  12.  
  13. t stablo;
  14. int FirstChildT (int n, t stablo) {
  15. return stablo.elementi[n].firstchild;
  16. }
  17.  
  18. int NextSiblingT (int n, t stablo) {
  19. return stablo.elementi[n].nextsibling;
  20. }
  21.  
  22. int LabelT (int n, t stablo) {
  23. return stablo.elementi[n].label;
  24. }
  25.  
  26. int ParentT (int n, t stablo) {
  27. for (int i=1; i<10000; i++) {
  28. if (FirstChildT(i, stablo)==n)
  29. return i;
  30. if (NextSiblingT(i, stablo)==n)
  31. return ParentT(i, stablo);
  32. }
  33. return -1;
  34. }
  35.  
  36. int RootT (t stablo) {
  37. return stablo.first;
  38. }
  39.  
  40. int CreateT (int x, int n, t &stablo) {
  41. int pom = 1;
  42. while (LabelT(pom, stablo)!=-1)
  43. pom++;
  44. stablo.elementi[pom].label = x;
  45. stablo.elementi[pom].firstchild = -1;
  46. stablo.elementi[pom].nextsibling = -1;
  47. if (stablo.elementi[n].firstchild != -1) {
  48. n = FirstChildT(n, stablo);
  49. while (NextSiblingT(n, stablo)!=-1)
  50. n = NextSiblingT(n, stablo);
  51. stablo.elementi[n].nextsibling = pom;
  52. }
  53. else stablo.elementi[n].firstchild = pom;
  54. return pom;
  55. }
  56.  
  57. void ChangeLabelT (int x, int n, t &stablo) {
  58. stablo.elementi[n].label = x;
  59. }
  60.  
  61. void DeleteT (int n, t &stablo) {
  62. int pom;
  63. if (FirstChildT(n, stablo)!=-1) {
  64. pom = FirstChildT(n, stablo);
  65. DeleteT(pom, stablo);
  66. while (NextSiblingT(pom, stablo)!=-1) {
  67. pom = NextSiblingT(pom, stablo);
  68. DeleteT(pom, stablo);
  69. }
  70. }
  71. stablo.elementi[n].label = -1;
  72. if (n != RootT(stablo) && FirstChildT(ParentT(n,stablo), stablo)==n)
  73. stablo.elementi[ParentT(n, stablo)].firstchild = NextSiblingT(n, stablo);
  74. else if (n != RootT(stablo)) {
  75. pom = FirstChildT(ParentT(n,stablo), stablo);
  76. while (NextSiblingT(pom, stablo) != n)
  77. pom = NextSiblingT(pom, stablo);
  78. stablo.elementi[pom].nextsibling = NextSiblingT(n, stablo);
  79. }
  80. }
  81.  
  82. void InitT (int x, t &stablo) {
  83. stablo.first = 1;
  84. stablo.elementi[1].label = x;
  85. stablo.elementi[1].firstchild = -1;
  86. stablo.elementi[1].nextsibling = -1;
  87. for (int i=2; i<10000; i++) {
  88. stablo.elementi[i].label = -1;
  89. stablo.elementi[i].firstchild = -1;
  90. stablo.elementi[i].nextsibling = -1;
  91. }
  92. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.