车务管理模型算法 (三)

2014-11-24 02:46:52 · 作者: · 浏览: 6
f(key[2]>'Z') key[2]=(char)(key[2]-'a'+'A');
}//GetSearchKey

void RandData(SLList &L)
//随机生成车牌号,这里将随机生成200个车牌号
{
int i,j;
for(i=1;i<=200;i++)
{
for(j=0;j {
if(j==0) L.r[i].keys[0]=(char)(rand()*4/32768+'0');
else
{
if(j==1&&L.r[i].keys[0]=='3') L.r[i].keys[1]='1';
else
{
if(j==2)
L.r[i].keys[2]=(char)(rand()*26/32768+'A');
else L.r[i].keys[j]=(char)(rand()*10/32768+'0');
}
}
}
}
L.keynum=7;
L.recnum=200;
}//RandData

void SLListTraRand(SLList L)
//遍历随机生成的静态表
{
int i,j;
if(L.recnum)
for(i=1;i<=L.recnum;i++)
{
for(j=0;j cout<<'\t';
}//for
}//SLListTraRand

bool Equal(KeysType key1[],KeysType key2[])
//判断相等
{
for(int i=0;i {if(!EQ(key1[i],key2[i])) return false;}
return true;
}//Equal

bool Little(KeysType key1[],KeysType key2[])
//判断较小
{
for(int i=0;i {
if(LT(key1[i],key2[i])) return true;
else if(BG(key1[i],key2[i])) return false;
}
return false;
}//Little

int Search_Bin(SLList L,KeysType key[])
{//二分查找
int low=1,high=L.recnum,mid;
while(low<=high){
mid=(low+high)/2;
if(Equal(key,L.r[mid].keys)) return mid;
else if(Little(key,L.r[mid].keys)) high=mid-1;
else low=mid+1;
}
return 0;
}//Search_Bin