数字电路线路的模拟 //逻辑电路由导线与逻辑单元连接 //逻辑单元可以转化多个输入输出连接 //逻辑单元具有时序 using BOOL = int; class Digraph{//采用有向图标识 private: int start; int end; public: void input(int v) { start = v; } int output() { end = start; return end; } }; class Cell{ private: int pinNumber; digraph* pin; public: Cell(int pinNumber){//通过有向图连接各个单元,此时还是图结构 pin = new digraph[pinNumber]; this->pinNumber = pinNumber; } ~Cell(); //...code } class SequenceChart{ public: int time; Cell* cell; SequenceChart* timeNext;//时序映射到每一层头节点 SequenceChart* childnext;//孩子节点 SequenceChart(Cell* cell);//通过私有化构析与构造,创建树状结构 public: //采用树状结构的广度遍历,那么就需要将树实现为多重链表结构 static void addNode(BOOL b){ SequenceChart* quChart = new SequenceChart; if(b == 0) { while(chlidnext!=nullptr) { chlidnext = chlidnext->chlidnext; } quChart->time = time chlidenext ->chidnext = quChart; return; } else { while(timeNext!=nullptr) { quChart->time += 1; timeNext = timeNext->timeNext; } quChart->time += 1; timeNext->timeNext = quChart; } } //code... } //数字电路图是图结构,而电路是有方向的,所以可以表示为有向图 //取电源开关为起始点,进行广度优先搜索,并将有向图转化为树状的时序图 //根据广度优先搜索,模拟数字电路的时序图