探索 > 線形探索法 > 線形探索法サンプル

線形探索法サンプルプログラム

  • Node[]内のキーと一致した場合、そのデータを表示するプログラム
#include <stdio.h>
#include <stdlib.h>

#define NELEM(array) (sizeof(array)/sizeof(array[0]))


struct{
  int key;
  int data;
}Node[20000];

enum{
  RAND_min = 0,//乱数の最小値
  RAND_max = 1000//乱数の最大値
};

int Rand(int min,int max)
{
/* 乱数を返す関数 最小値、最大値をとる */
  static int flag;
  if(!flag){
    srand((unsigned int)time(NULL));
    flag = 1;
  }

  return (max - min + 1) * (float)rand()/RAND_MAX + min;
}

void init()
{
  int i;
  for(i = 0;i < NELEM(Node); i++){
    Node[i].key = i;
    Node[i].data = Rand(RAND_min,RAND_max);
    printf("%d %d \n",Node[i].key,Node[i].data);
  }
}

int search(int key)
{
/* 線形探索 番兵なし */
  int i = 0;
  for(i = 0; i < NELEM(Node); i++){
    if(Node[i].key == key){
      return (Node[i].data);
    }
  }
  return -1;
}

int main(int argc,char *argv[])
{  
  int key = atoi(argv[1]);
  int data;
  init();

  if((data = search(key)) > 0){
    printf("Data found : key %d data %d \n",key,data);
  }else{
    printf("Not found\n");
  }

  return 0;
}


コメント:
最終更新:2011年03月04日 14:15