struct gate
{
char name[10];
int type; //Type of the gate : INPUT,AND, OR, NOT, FLIPFLOP
int value;
char inputname1[10];
char inputname2[10];
struct gate *input1;
struct gate *input2;
};
Я создал дерево со структурной структурой, но не могу понять, как вычислить его рекурсивным способом, вы можете помочь?
int pre(struct gate *root) //address of root node is pass
{
if(root->input1->type==INPUT || root->input2->type==INPUT){
if(root->type == OR){
root->type = INPUT;
return root->value = gateor(root->input1->value,root->input2->value);
}
if(root->type == AND){
root->type = INPUT;
return root->value = gateand(root->input1->value,root->input2->value);
}
if(root->type==NOT){
root->type=INPUT;
return root->value = gatenot(root->input1->value);
}
if(root->type == FLIPFLOP){
root->type = INPUT;
return root->value = gateflipflop(root->input1->value,0);
}
}
pre(root->input1);
pre(root->input2);
}
я не могу думать рекурсивно, я надеялся, что это сработает.
a, b, c, d - это структура, но она имеет только значение, тип и имя.
значения1 и 0
значения ворот = -1;
Я не знаю, нужны ли эти значения.