對一個連結串列判斷是否有環
目前能想到的是兩種:一:在遍歷的同時對其節點進行儲存(儲存方式多樣);
二:設定兩個指標(變數),利用速度(遍歷快慢)差,進行判斷。
一:採用容器unordered_set ,進行儲存;(set為集合即不能插入相同的)
關於容器unordered_set;
https://blog.csdn.net/qq_32172673/article/details/85160180
bool Set_Cirlist(ListNode*head){
unordered_set<ListNode*> Lset;
while(head!=nullptr){ // 當頭指標不為空時執行
if(Lset.count(head)){ //count函式返回相同元素個數
return true; //即在Lset中存在相同的元素 返回true
}
Lset.insert(head); //插入資料
head=head->next; //指標向後移動;
}
return false;
}
二:設定兩個指標變數。
對於兩個指標變數Fpos,Spos;對於兩個有速度差的量,如果重逢,便存在環;
bool Speed_Cirlist(ListNode*head){
if(head==nullptr||head->next==nullptr) //為空時,以及一個元素時
return false;
ListNode*Fpos=head;
ListNode*Spos=head->next;
while(Fpos!=Spos){
if(Spos == nullptr || Spos->next==nullptr) //新增判斷
return false;
Fpos=Fpos->next;
Spos=Spos->next->next; //那麼後面第二個是否存在/或者為空,即->next、->next->next後是否為空,便需要在前面新增判斷
}
return true;
}
相關文章
- 演算法題:反轉一個單連結串列&判斷連結串列是否有環演算法
- 判斷是否為環形連結串列
- 請判斷一個連結串列是否為迴文連結串列。
- 如何判斷連結串列中是否有環並找出環的入口位置
- 判斷單連結串列是否關於中心對陣
- 判斷一個有向圖是否有環
- 判斷單連結串列中是否存在環,並輸出環入口節點。
- 判斷迴文連結串列
- 牛客網高頻演算法題系列-BM6-判斷連結串列中是否有環演算法
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- POJ3259 Wormholes【判斷是否有負環】Worm
- 牛客網高頻演算法題系列-BM13-判斷一個連結串列是否為迴文結構演算法
- 如何判斷一個玩法是否合格?
- 判斷網路是否連線
- PbootCMS整理判斷是否連結賦值各種條件判斷和標籤boot賦值
- 如何判斷一個物件是否為空?物件
- 判斷一個陣列是否排好序陣列
- 如何判斷一項技術是否有前途?
- Activiti判斷流程是否結束
- 判斷字串是否唯一字串
- 如何判斷一個元素文字是否換行?
- python如何判斷一個物件是否是列表Python物件
- PHP 判斷一個字元是否在字串中PHP字元字串
- PHP判斷一個字串是否包含亂碼PHP字串
- javascript 判斷括號是否配對。JavaScript
- python如何判斷一列是否有資料Python
- 模擬微任務 判斷是否有對應的apiAPI
- js判斷物件裡面是否有某個屬性JS物件
- 環形連結串列
- HDU 1671 字典樹(判斷是否有一個串是另一個串的子串)。
- 判斷一個數是否為質數(程式碼)
- 如何判斷一個 interface{} 的值是否為 nil ?
- python如何判斷一個數是否是整數Python
- 判斷Map集合中是否存在某一個key
- JS如何判斷一個陣列是否為空、是否含有某個值JS陣列
- js判斷兩個物件是否相等JS物件
- 判斷是否遵守某個協議協議
- 判斷欄位中是否有漢字