単一チェーンテーブルの中点を検索
505 ワード
単一チェーンテーブルがチェーンテーブルの中点を効率的に見つける方法を指定します.要求アルゴリズム複雑度O(N),読者がこのような問題に遭遇した場合,この問題は解決され,チェーンテーブルにループがあるかどうかを検証し,スナップポインタ変数チェーンテーブルを用い,同理中点問題もスナップポインタを用いて実現することができ,スローポインタは一度に1つのノードを移動し,スナップポイントは一度に2つのノードを移動し,スナップポインタが終点に達したとき,スローポインタは中点を指す.
LinkNode *FindMid(LinkNode *p){
if(p == NULL){
return NULL;
}
LinkNode *fast = p;
LinkNode *slow = p;
while(fast && fast->next){
fast = fast->next->next;
slow = slow->next;
}
return slow;
}