1. 程式人生 > >證明,一個環狀連結串列(首尾相連)的兩個指標head1和head2 從同一個節點出發,head1每次走一步, head2 每次走兩步,他們第一次相遇於出發的節點

證明,一個環狀連結串列(首尾相連)的兩個指標head1和head2 從同一個節點出發,head1每次走一步, head2 每次走兩步,他們第一次相遇於出發的節點

一個環狀連結串列(收尾相連),兩個指標 head1和head2 從同一個節點出發,head1每次走一步, head2 每次走兩步,請證明,兩個指標第一次相遇於出發的節點。
設兩個指標走的次數為 x,使用簡單的數學公式即可證明。難度 1 面。考察基本的數學 知識。
設連結串列有 m 個元素,head1 在第一次相遇時走了 n 步,c 為 head1 和 head2 第一次相遇的節點距離出發
節點的距離。
則: head1 走過的路程為 n=c+q*m;(q為整數)
head2 走過的路程為 2n=c + k *m ; (k 為整數)
因此,兩式相減後得出n=(k-q)*m,即 n 恰好是連結串列長度的整數倍,即兩個指標第一次相遇一定是在出發的節點。