単一チェーンテーブルの中点を検索

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;

  }