логическое моделирование гейта - PullRequest
0 голосов
/ 18 декабря 2018
 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;
    };

Я создал дерево со структурной структурой, но не могу понять, как вычислить его рекурсивным способом, вы можете помочь?

schema

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;
Я не знаю, нужны ли эти значения.

1 Ответ

0 голосов
/ 18 декабря 2018

Рекурсивно вы можете решить это так:

int pre (struct gate *root) {
    if (root->type == INPUT)
        return root->value; // This is the recursion end
    else if (root->type == OR) {
        return gateor(pre(root->input1), pre(root->input2)); // Recurse here
    } else if (root->type == AND) {
        return gateand(pre(root->input1), pre(root->input2));
    } // Same for the other operations
}

Это должно дать вам представление о том, как решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...