Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. #ifndef BINFAJ_H
  2. #define BINFAJ_H
  3. #include <stdlib.h>
  4. #include<iostream>
  5. #include<fstream>
  6. using namespace std;
  7. template<class T>
  8. class Binfa {
  9. protected:
  10. struct Faelem{ //belso osztály, bináris fa eleme
  11. T adat;
  12. Faelem *jobb;
  13. Faelem *bal;
  14. Faelem(T a=0, Faelem *e=NULL, Faelem *k=NULL): adat(a), jobb(e), bal(k) {} //konstruktor
  15. };
  16. Faelem *gyoker;
  17. public:
  18. Binfa(Faelem *gy=NULL): gyoker(gy) {} //konstruktor
  19. Faelem* get_gyoker(){ return gyoker;} //a fa gyökerének pointerével tér vissza
  20. void hozzaad(Faelem *a){ //elem hozzáadása a fához
  21. if (gyoker==NULL) gyoker=a;
  22. else if (a->adat>this->gyoker->adat) {this->gyoker->bal=a; this->gyoker->jobb=NULL;}
  23. else {this->gyoker->jobb=a; this->gyoker->bal=NULL;}
  24. a->jobb=NULL;
  25. a->bal=NULL;
  26. this->gyoker=a;
  27. }
  28. /*a hozzaad függvény T típusú paraméterrel meghívható változata,
  29. a kapott paraméterbol létrehoz egy faelemet, és azt adja hozzá a fához*/
  30. void hozzaad(T a){
  31. Faelem *gy;
  32. gy=new Faelem(a);
  33. hozzaad(gy);
  34. delete gy;
  35. }
  36. //fájlból beolvasás
  37. void beolv_f(){
  38. cout<<"Írja be a fájl nevét!"<<endl;
  39. char *s;
  40. cin>>s;
  41. fstream f;
  42. f.open(s, fstream::in);
  43. T a;
  44. char p[20];
  45. while (f){
  46. f.getline(p, 20);
  47. cin>>p>>a;
  48. Faelem *gy;
  49. gy=new Faelem(a);
  50. hozzaad(gy);
  51. delete gy;
  52. }
  53. f.close();
  54. }
  55. //fájlba kiírás
  56. void ki(Faelem* gy, fstream f){
  57. f<<gy->adat<<endl;
  58. bejar(gy->jobb, f);
  59. bejar(gy->bal, f);
  60. }
  61. void ki_f(){
  62. cout<<"Adja meg a fájl nevét"<<endl;
  63. char *s;
  64. cin>>s;
  65. fstream f;
  66. f.open(s, fstream::out);
  67. ki(get_gyoker(), f);
  68. f.close();
  69. }
  70. //beolvasás standard bemenetrol
  71. void beolv_s(){
  72. char c;
  73. T a;
  74. while((c=getchar())!=27){
  75. if (c!='\n') {
  76. cin>>a;
  77. Faelem *gy;
  78. gy=new Faelem(a);
  79. hozzaad(gy);
  80. delete gy;
  81. }
  82. }
  83. }
  84. //kiírás standard kimenetre
  85. void ki_s(Faelem *gy){
  86. cout<<gy->adat<<endl;
  87. ki_s(gy->bal);
  88. ki_s(gy->jobb);
  89. }
  90. void torol() { *this=NULL; delete[] this;}
  91. };
  92. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement