我正在嘗試編寫一個邏輯門電路模擬器,除了一件事情之外,一切工作都已到期。我的結構是這樣的:檢測邏輯電路模擬器中的迴路
struct node
{
int number;
bool has_value;
bool is_input;
bool value;
Gate operation;
node* input1;
node* input2;
};
該程序通過使用遞歸計算產值,所以任何一種結構內部循環的打亂了一切。我的問題是:我如何檢測這樣的東西(見圖片),因爲我無法想出任何有效的東西。
我在做什麼,當我需要檢測某些結構中的循環時,通過它遞歸:將附加的'std :: set'參數傳遞給遞歸函數,然後使該函數寫入唯一標識符)的項目被/處理到'std :: set',然後遞歸地傳遞它。如果您檢測到您即將處理的項目已經在一個集合中,您可以知道它已經被處理。 –
事情是,你畫的電路是完全有效的。有處理這個方法,所以模擬仍然按預期運行 - http://stackoverflow.com/questions/14299603/how-to-handle-loops-in-a-digital-logic-simulator –
這就是我最初的想法,但不會像這樣的東西也算作與該解決方案的循環? @AlgirdasPreidžius ![圖片](http://oi64.tinypic.com/1zn7ecl.jpg) – fardragon