檢查有環演算法
發布時間: 2023-07-31 17:06:01
Ⅰ c語言,有向圖里如何檢測是否有環
1、為其定義一個名稱,就叫【StackEmpty】。
Ⅱ c++判斷有向圖是否有環的演算法
通常是用鄰接矩陣來表示一個有向圖。從圖中的每一個點出發,用深度優先遍歷的演算法,如果能夠回到出發點,圖中就是有環的;如果每一個點都不能回到出發點,那麼它就是無環的。
Ⅲ C中怎麼判斷鏈表中是否有環
用兩個指針來遍歷這個單向鏈表,第一個指針p1,每次走一步;
第二個指針p2,每次走兩步;
當p2 指針追上p1的時候,就表明鏈表當中有環路了。
A.判斷鏈表是否有環
設置兩個指針p1和p2,初始值均指向鏈表頭,p1每次向前走一步,而p2每次向前走兩步。
如果鏈表有環,則p2先進入環里,而p1後進入環里,兩個指針在環中必定相遇。
如果p1與p2沒有相遇,p2遍歷到鏈表的尾部,則表示鏈表沒有環。
B.鏈表有環,確定環的入口點
設置p1指針指向鏈表頭,p2指向相遇點,每次兩個指針都是只走一步,兩個指針必定相遇,
則相遇第一點為環入口點。
C.計算環長
在環的入口點設置一個指針和一個計數器,讓這個指針在環裡面走,每走一步,計數器就加1,
當這個指針回到環的入口點的時候,計數器的值就是環長。
例如:
int testLinkRing(Link *head)
{
Link *t1=head,*t2=head;while( t1->next && t2->next)
{
t1 = t1->next;if (NULL == (t2 = t2->next->next))return 0; // 無環 if (t1 == t2)return 1;
}
return 0;
}
熱點內容