單鏈表是否有環問題

2021-08-01 14:11:15 字數 521 閱讀 2137

有很多種方式解決問題,我這裡只說一種方法

使用p、q兩個指標,p每次向前走一步,q每次向前走兩步,若在某時候p == q,則存在環,如圖:

**實現:

#include #include #define len 8

typedef struct node*node_t;

int has_loop2(node_t head);

int main()

arr[len - 1]->next = null;

if(has_loop2(arr[0]))

printf("是環\n");

else

printf("不是環\n");

return 0;

}int has_loop2(node_t head)

} return 0;

}

判斷單鏈表是否有環

1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fast,slow 初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。當然,fas...

判斷單鏈表是否有環

鍊錶結構 struct list 1 判斷單鏈表是否有環 採用追趕法,設定兩個指標p和q,從煉表表頭開始,p每一步走兩個節點,q每一步走乙個節點,如果鍊錶有環則p和q必相遇。如下 判斷鍊錶是否有環,時間複雜度o n 空間複雜度o 1 list hasloopinlist list head else...

判斷單鏈表是否有環

1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fast,slow 初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。當然,fas...