The naive implementation of a FA would have the node look like:
struct Node {
string label;
Node*[char] trans;
}
But what if one of your transitions is "![a]" (anything but the char 'a'). And your alphabet is too huge to store all possible chars that are not 'a'. Do you see what I mean?
Edit. My current guess is
struct NFAState {
string label;
Node*[][char] trans;
Node*[][char] notTrans;
Node*[] epsTrans;
}
for an NFA node.
You could add a second
Node*[char] notTrans;
and store all nodes for the not cases.