C語言 快慢指標 判斷是否是環形的鍊錶

2021-09-24 09:35:35 字數 704 閱讀 5668

給定乙個有限鍊錶,判斷鍊錶中是否有環。 所謂的環 不一定是是最後的指向第乙個節點, 也可能是指向中間的節點

快慢指標 判斷是否是迴圈鍊錶

*/#include #include typedef struct linkedlist linkedlist;

linkedlist *newnode(int num)

// 建立乙個非迴圈鍊錶

linkedlist *initsortstruct(int length)else

} // 將最後節點的頭節點指向空節點

current->next = null;

return headnode;

}// 快慢指標

int quickslowpoint(linkedlist *x)

x = x->next;

if(y->next == null || y->next->next == null)

y = y->next->next;

if(x == y)

} return 0;

}int main(int argc, char const *ar**)

return 0;

}

02 判斷乙個鍊錶是否是環形鍊錶 用快慢指標來實現

用快慢指標的思想 快指標走兩步,慢指標只走一步。如果這個鍊錶是乙個環,那麼快指標和慢指標總會相遇的。快慢指標的原理 假設快慢指標之間相差n步,慢指標先走一步,那麼快慢指標相差n 1步 然後快指標走兩步,那麼快慢指標相差n 1 2 n 1步 也就是說,每走一次,快慢指標的距離就減少一次 那麼走到n次的...

C語言快慢指標

include include include 用到了time函式,所以要有這個標頭檔案 define false 0 define true 1typedef int status typedef int elemtype typedef struct node node typedef stru...

判斷單鏈表是否有環(快慢指標)

方法一 使用p q兩個指標,p總是向前走,但q每次都從頭開始走,對於每個節點,看p走的步數是否和q一樣。如圖,當p從6走到3時,用了6步,此時若q從head出發,則只需兩步就到3,因而步數不等,出現矛盾,存在環。方法二 使用p q兩個指標,p每次向前走一步,q每次向前走兩步,若在某個時候p q,則存...