Difference between revisions of "TADM2E 3.27"
From Algorithm Wiki
(Recovering wiki) |
|||
(2 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | <pre> | |
1) Take two pointers Fast and Slow (Slow jumps one step at a time while Fast two step) | 1) Take two pointers Fast and Slow (Slow jumps one step at a time while Fast two step) | ||
2) While (Fast != NULL) | 2) While (Fast != NULL) | ||
Line 5: | Line 5: | ||
return true; | return true; | ||
else | else | ||
− | fast = fast- | + | fast = fast->next->next |
− | slow = slow- | + | slow = slow->next |
3) return false; | 3) return false; | ||
After detecting loop stop one pointer and increment other pointer by 1 step untill | After detecting loop stop one pointer and increment other pointer by 1 step untill | ||
Line 28: | Line 28: | ||
EndLoop | EndLoop | ||
4. Fast and Slow Both are pointing to the start of loop position. Now you can break the Loop in link list. | 4. Fast and Slow Both are pointing to the start of loop position. Now you can break the Loop in link list. | ||
− | + | </pre> | |
--[[User:Max|Max]] 06:18, 25 June 2010 (EDT) | --[[User:Max|Max]] 06:18, 25 June 2010 (EDT) |
Latest revision as of 15:53, 23 July 2020
1) Take two pointers Fast and Slow (Slow jumps one step at a time while Fast two step) 2) While (Fast != NULL) if(Fast == Slow) return true; else fast = fast->next->next slow = slow->next 3) return false; After detecting loop stop one pointer and increment other pointer by 1 step untill Loop if (fast == slow) break; else slow++ LoopLength++ EndLoop You can find out loop start position also. Once you have LoopLenght. 1. Fast = Slow = Start 2. Fast += LoopLenght 3. Loop If Fast != Slow Fast++; Slow++ EndLoop 4. Fast and Slow Both are pointing to the start of loop position. Now you can break the Loop in link list.
--Max 06:18, 25 June 2010 (EDT)