我从一个编程任务开始。我必须根据图表设计一个 DFA。这是我用于它的数据结构:
typedef struct n{
struct n *next[255]; //pointer to the next state. Value is NULL if no transition for the input character( denoted by their ascii value)
bool start_state;
bool end_state;
}node;
现在我已经准备好了一个基于 DFA 图形的结构。我需要在几个地方使用这个 DFA;DFA 将在这几个地方中的每一个中进行修改。但我希望将未修改的 DFA 传递给这些不同的函数。一种方法是创建此 DFA 的副本。这样做最优雅的方法是什么?所以它们都被初始化为 NULL 值或指向另一个状态的指针。
注意: 我希望在被调用函数中创建副本,即我传递 DFA,被调用函数创建其副本并对其进行操作。这样,我原来的 DFA 就不会被吓倒。
更多注意事项:
从 DFA 的每个节点,我可以有一条有向边将它与另一条边连接起来,如果在输入字母出现时发生转换,c
那么state->next[c]
将有一个指向下一个节点的指针。next
数组的几个元素可能为 NULL。修改 NFA 意味着添加新节点以及更改现有节点。