数据结构课程设计----车牌查询问题
汽车牌照的快速查询 ? ?对一组汽车牌照进行排序和查找。 基本要求: ? ? (1)利用排序算法对汽车牌照进行排序; ? ? (2)采用折半查找思想完成查找。 测试数据要求: ? ? 测试的数据不得少于50个,不得有重复的牌照。车牌号中可以是数字和字符的组合,车牌号可以人工输入,也可以自动生成。 ? #include #include #include #include typedef char Car[10]; typedef struct { Car *elem; int length; }LinkList; void Input(LinkList &L) { printf("请输入待排序车辆的数目:n"); scanf("%d",&L.length); L.elem=(Car*)malloc(L.length*sizeof(Car)); printf("请依次输入车辆的车牌号:n"); for(int i=0;i scanf("%s",L.elem[i]); } void BubbleSort(LinkList &L) {//对车牌号进行排序 char a[20]; int i,j; int flag=1; for(i=0;i { flag=0; for(j=0;j if(strcmp(L.elem[j],L.elem[j+1])>0) { strcpy(a,L.elem[j]); strcpy(L.elem[j],L.elem[j+1]); strcpy(L.elem[j+1],a); flag=1; } } } void Binsrch(LinkList &L,char *a) {//利用折半查找查找车牌号是否存在 int low,high,mid; int flag=1; low=0; high=L.length-1; while(low<=high&&flag) { mid=(low+high)/2; if(strcmp(a,L.elem[mid])==0) { printf("查找的该车牌号是第%d个。n",mid+1); flag=0; } else if(strcmp(a,L.elem[mid])>0) { low=mid+1; mid=(low+high)/2; } else { high=mid-1; mid=(low+high)/2; } } if(flag) printf("查找的车牌号不存在。n"); } void Output(LinkList &L) { int i; for(i=0;i printf("%sn",L.elem[i]); } int main() { int i; LinkList L; char car[20]; while(1) { printf("————————请选择操作——————————n"); printf("——1.输入信息 2.车牌号排序 3. 车牌号查询 0.退出——n"); scanf("%d",&i); switch(i) { case 1: Input(L); break; case 2: printf("车牌号的排序结果为:n"); BubbleSort(L); Output(L); break; case 3: printf("输入要查找的车牌号:n"); getchar(); gets(car); Binsrch(L,car); break; case 0: return 0; } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |