WITAM!
Mam taka strukture:
typedef struct BT
{
uint type;
uint out_num;
uint in_num1;
uint in_num2;
struct BT *previous_gate1;
struct BT *previous_gate2;
struct BT *next_gate;
} logic_gate;
logic_gate *start;
I teraz chce ja przeszukac az znajde pewna wartosc search w jednej z in_num1 lub in_num2. Wiem z gory, ze znaduje sie ona w jednej z tego typu struktur. Drzewo jest zorientowane na dwie strony, czyli kazdy wezel ma wskaznik do rodzica(next_gate) i swoich synow(previous_gate1, previous_gate2). Wezly nie sa jednak ponumerowane w zaden sposob. Funkcja ma zwracac wskaznik na dana strukture (element drzewka). NULL'a nie zwroci bo jak pisalem na pewno jest tam ten element. Sam kombinowalem i wymyslilem cos takiego:
#define TRUE 1
#define FALSE 0
#define NUP 0
unsigned int found_gate=TRUE;
logic_gate *search_gate(logic_gate *gate,cuint search)
{
logic_gate *tmp=gate;
if(!found_gate)
{
if(tmp->in_num1==search || tmp->in_num2==search)
{
printf("Znalezion!! o:%d i1: %d i2: %d\n",tmp->out_num,tmp->in_num1,tmp->in_num2);
found_gate=TRUE;
return tmp;
}
else
{
if(tmp->previous_gate1!=NULL)
tmp=search_gate(tmp->previous_gate1,search);
if(found_gate) return tmp;
if(tmp->previous_gate2!=NULL && tmp->previous_gate2 !=NUP)
tmp=search_gate(tmp->previous_gate2,search);
if(!tmp->previous_gate1 &&
(!tmp->previous_gate2 || tmp->previous_gate2==NUP)
)
return tmp;
}
}
else return tmp;
}
Kod dziala, jednak zwiesza sie jesli sie wpisze wiecej bramke z bramkami NOT (NUP to neuzywany wskazk w bramce NOT po ktorym sie nie sprawdza). Co jest zle?? Bardzo prosze o pomoc! POZDRAWIAM!