Eukleides project

from http://d.hatena.ne.jp/u5_h/

(アルゴリズム構造関係)探索のまとめ1

構造体配列における線形探索と2分探索
#include
#include
#define SIZE 17

struct cell{
int key;
char info[20];
};
struct cell a[SIZE];
//構造体配列における線形探索関数
struct cell linear_search(int target){
int p;
for(p=0;p<=SIZE;p++){
if(target==a[p].key)
break;
}
return a[p];
}
//構造体配列における2分探索関数
struct cell bin_search(int target){
int lo=0;
int hi=SIZE+1;
int mid;
while(lo<=hi)
{
mid=(lo+hi)/2;
if(target*1=='\0')
{
printf("file error!\n");
exit(1);
}
while(fscanf(fp,"%d %s",&a[i].key,a[i].info)!=EOF)
i++;
printf("ターゲットを入力してください>");
scanf("%d",&target);
struct cell p;
p=linear_search(target);
printf("探索中の文字は%sです\n",p.info);
p=bin_search(target);
printf("探索中の文字は%sです\n",p.info);
return 0;
}
データファイルdata.txtを各自
1 abc
2 def
3 ghi
4 jkl
5 mno
6 pqr
7 stu
8 vwx
9 yzh
10 happy
11 ahahaha
12 uhyahya
13 vafvfv
14 vaervav
15 jlagjiah
16 dfkvabab
17 gvagerini
みたいに作り実行。
比較のtarget==a[p].keyやtarget

*1:fp=fopen("data.txt","r"