Return to Snippet

Revision: 68577
at January 21, 2015 03:41 by vangogh94


Initial Code
#include <iostream>
using namespace std;

struct bStabloStrukt {//stablo ^^
  int data;
  bStabloStrukt *L,*D;
  bStabloStrukt():L(NULL),D(NULL){}
};
typedef bStabloStrukt* elem;
typedef bStabloStrukt* cvorStrukt;
typedef bStabloStrukt* cvor;
cvorStrukt ParentB(elem trazi, bStabloStrukt *binStablo){
  static elem pamti;
  static elem glava=binStablo;
  if(trazi==glava) return NULL;//ako trazimo roditelja za glavu vracamo nulu odma
  
  if(binStablo->L!=NULL) //krecemo se lijevo
    ParentB(trazi, binStablo->L);
  if(binStablo->D!=NULL)//krecemo se desno
    ParentB(trazi, binStablo->D);
    
  if(binStablo->D==trazi||binStablo->L==trazi)//ako smo naisli na element pamtimo ga u staticku
    pamti= binStablo;
  return pamti;//vracamo staticku kroz sve rek pozive
}


cvorStrukt LeftChildB(elem trazi, bStabloStrukt *binStablo){
  return trazi->L;
}

cvorStrukt RightChildB(elem trazi, bStabloStrukt *binStablo){
  return trazi->D;
}

int LabelB(elem trazi, bStabloStrukt *binStablo){
  return trazi->data;
}

void ChangeLabelB(int unos, elem trazi, bStabloStrukt *binStablo){
  trazi->data=unos;
}

cvorStrukt RootB(bStabloStrukt *binStablo){
  return binStablo;
}

bool CreateLeftB(int unos, elem trazi, bStabloStrukt *binStablo){
  if(trazi==NULL||trazi->L!=NULL)
    return false;
  trazi->L=new bStabloStrukt;
  trazi->L->data=unos;
  return true;
}

bool CreateRightB(int unos, elem trazi, bStabloStrukt* binStablo){
  if(trazi==NULL||trazi->D!=NULL)
    return false;
  trazi->D=new bStabloStrukt;
  trazi->D->data=unos;
  return true;
}

void InitB(int unos, bStabloStrukt *&binStablo){
  binStablo=new bStabloStrukt;
  binStablo->data=unos;
}


void DeleteB(elem trazi, bStabloStrukt *binStablo){
  if(trazi==NULL) return;
  if(trazi->L!=NULL)
    DeleteB(trazi->L, binStablo);
  if(trazi->D!=NULL)
    DeleteB(trazi->D, binStablo);
  if(trazi!=RootB(binStablo)&&ParentB(trazi, binStablo)->L==trazi) 
    ParentB(trazi,binStablo)->L=NULL; 
  else if(trazi!=RootB(binStablo))
    ParentB(trazi,binStablo)->D=NULL; 
  delete trazi;
}

Initial URL


Initial Description
Biblioteka sa funkcijama za rad sa binarnim stablom realizirano preko pokazivača

Initial Title
binStablo_pokazivaci.h

Initial Tags


Initial Language
C++