Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #ifndef BINFAJ_H
- #define BINFAJ_H
- #include <stdlib.h>
- #include<iostream>
- #include<fstream>
- using namespace std;
- template<class T>
- class Binfa {
- protected:
- struct Faelem{ //belso osztály, bináris fa eleme
- T adat;
- Faelem *jobb;
- Faelem *bal;
- Faelem(T a=0, Faelem *e=NULL, Faelem *k=NULL): adat(a), jobb(e), bal(k) {} //konstruktor
- };
- Faelem *gyoker;
- public:
- Binfa(Faelem *gy=NULL): gyoker(gy) {} //konstruktor
- Faelem* get_gyoker(){ return gyoker;} //a fa gyökerének pointerével tér vissza
- void hozzaad(Faelem *a){ //elem hozzáadása a fához
- if (gyoker==NULL) gyoker=a;
- else if (a->adat>this->gyoker->adat) {this->gyoker->bal=a; this->gyoker->jobb=NULL;}
- else {this->gyoker->jobb=a; this->gyoker->bal=NULL;}
- a->jobb=NULL;
- a->bal=NULL;
- this->gyoker=a;
- }
- /*a hozzaad függvény T típusú paraméterrel meghívható változata,
- a kapott paraméterbol létrehoz egy faelemet, és azt adja hozzá a fához*/
- void hozzaad(T a){
- Faelem *gy;
- gy=new Faelem(a);
- hozzaad(gy);
- delete gy;
- }
- //fájlból beolvasás
- void beolv_f(){
- cout<<"Írja be a fájl nevét!"<<endl;
- char *s;
- cin>>s;
- fstream f;
- f.open(s, fstream::in);
- T a;
- char p[20];
- while (f){
- f.getline(p, 20);
- cin>>p>>a;
- Faelem *gy;
- gy=new Faelem(a);
- hozzaad(gy);
- delete gy;
- }
- f.close();
- }
- //fájlba kiírás
- void ki(Faelem* gy, fstream f){
- f<<gy->adat<<endl;
- bejar(gy->jobb, f);
- bejar(gy->bal, f);
- }
- void ki_f(){
- cout<<"Adja meg a fájl nevét"<<endl;
- char *s;
- cin>>s;
- fstream f;
- f.open(s, fstream::out);
- ki(get_gyoker(), f);
- f.close();
- }
- //beolvasás standard bemenetrol
- void beolv_s(){
- char c;
- T a;
- while((c=getchar())!=27){
- if (c!='\n') {
- cin>>a;
- Faelem *gy;
- gy=new Faelem(a);
- hozzaad(gy);
- delete gy;
- }
- }
- }
- //kiírás standard kimenetre
- void ki_s(Faelem *gy){
- cout<<gy->adat<<endl;
- ki_s(gy->bal);
- ki_s(gy->jobb);
- }
- void torol() { *this=NULL; delete[] this;}
- };
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement