そーいや、最終期限はいつだ?

int climb_search(void)
{
  initialize();
  insert(START);
  while ((n = delete_min()) >= 0) {
    if (n == GOAL)
      return 1;
    clear();
    append_from(n);
  }
  return 0;
}

int best_fit_search(void)
{
  initialize();
  inseart(START);
  while ((n = delete_min()) >= 0) {
    if (n == GOAL)
      return 1;
    append_from(n);
  }
  return 0;
}

基本形はこんなん?
insertはリストにノードを登録。delete_minはリスト中の最小のノードを取り出す。
clearはリストを空にする。append_fromはnからいけるノードをリストに追加。appendってのが英語として自信ないが。

俺は頭わるいんで、長い関数やインデントが深いソースは読めんのだ。すまんな。