欢迎来到天天文库
浏览记录
ID:50774056
大小:227.50 KB
页数:16页
时间:2020-03-14
《数据结构课程设计--汽车牌照的快速查找.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、算法与数据结构课程设计xx大学课程设计实践报告学院:计算机与信息工程学院课程名称:算法与数据结构任课教师:xxx班级:xx班学号:xxx姓名:xxx同组学生:实践地点:xx大学实践时间:2010年8月19日至2010年9月3日~16~算法与数据结构课程设计一、实验题目:汽车牌照的快速查找二、实验要求:利用链式基数排序和折半查找对一批汽车牌照进行排序和查找三、问题分析:想要完成题目要求,需要选择链表对汽车信息(包括汽车牌照、汽车颜色、汽车商标、汽车的注册时间、汽车所有者等)进行存储,并在此基础上进行多关键字排序,因为汽车牌
2、号是汉字、字母和数字的组合。考虑到对汉字进行排序是一件不可能的事,因此对各省市的简称可以放到字符串数组中,也就可以通过数组下标进行排序,字母可以选择同汉字一样的处理方法,数字却很容易进行排序。因此,排好序的汽车牌照其实就是一组长整型数组,例如根据行政规划对各省市的简称进行存储,如汽车牌照京C0123,转换为长整型数组后为00020123如何对排好序的车辆信息进行折半查找呢?因为存储好的汽车信息其实就是一组长整型数组,而所输入的信息就是一个长整型数据,然后再那个数组中进行折半查找既可以实现。四、设计思路及流程:为了完成所需
3、的功能,需要的函数及其功能如下:main():主函数模块SetList():添加车辆函数Distribute():进行基数排序每一趟的分配函数Collect():进行基数排序每一趟的收集函数find():二分查找函数menu():主函数显示菜单模块print():输出所有车辆信息函数paixu():基数排序函数以下为各函数流程图~16~算法与数据结构课程设计主函数流程图:汽车信息函数SetList(p)流程图:~16~算法与数据结构课程设计~16~算法与数据结构课程设计开始结束n=t输入nn=cn=q调用子函数SetLi
4、st(p)调用子函数print()调用子函数find(p)n=sYNNYYYNNNNNN开始结束申请一结点p并为其分配内存空间。head=NULLhead=p输入汽车的相应信息,经过相应的处理后存入结点p相应的域。将该结点按尾插法插入到链表的相应位置返回该链表的头指针YN~16~算法与数据结构课程设计~16~算法与数据结构课程设计排序子函数paixu(p)的流程图:查找子函数find(p)的流程图~16~算法与数据结构课程设计~16~算法与数据结构课程设计开始结束i=M-1i>=0调用Distribute及Collect
5、函数i++遍历排序好的链表将每个车辆的牌照号转换为长整型数据存于一个一维数组A[MAX]中。YN开始结束输入需要查找的牌照将待查找的牌照号处理后存于一整型变量中调用折半查找函数并返回cc=-1没有查找成功查找成功并输出该车的信息YN~16~算法与数据结构课程设计~16~算法与数据结构课程设计~16~算法与数据结构课程设计一、详细算法思想:1、基数排序的过程:首先将待排序的记录分成若干个子关键字,排序时,先按最低位的关键字对记录进行初步排序;在此基础上,再按次低位关键字进一步排序,以此类推,由低位到高位,由此关键字到主关键
6、字,每一趟排序都在前一趟排序的基础上,直到按最高位关键对记录进行排序后,基数排序完成。在基数排序中,基数是各个关键只的取值范围。若待排序的记录是十进制,则基数是10;若待排序的记录是由若干个字母组成的单词,则基数为26,也就是说,从最右边的字母开始对记录进行排序,每次排序都将待排序记录分成26组,但在此问题中,车牌号是由汉字,字母以及数字组成,若直接进行排序,则需要分成34组,为了提高算法的空间性能,可以将汉字及字母转换为十进制数后再进行基数排序。例如:一组记录的关键字为:(278,109,63,930,589,184,
7、505,269,8,83)~16~算法与数据结构课程设计可以看出,这组关键字与以前说过的用来排序的关键字并无差别,且也是针对但关键字对一组记录进行排序。但在基数排序中,我们可以将单关键字看成由若干个关键字复合而成。上述这组关键字的值都在0~999的范围内,我们可以把一个数位上的十进制数字看成是一个关键字,即将关键字K看成由3个关键K0,K1,K2组成。其中,K0是百位上的数字,K1是十位上的数字,K2是个位上的数字。因为十进制的基数是10,所以,每个苏伟山的数字都可能是0~9中的任何一个。我们先将关键字K2来分配所有参与
8、排序的元素,将K2=0的元素防在一组、K2=1的元素放在一组、……、K2=9的元素放在一组。这样,将上述一组元素分成10组,如下(a)图所示。然后,再将K2的值由0到9的顺序收集各组元素,形成序列(930,063,083,184,505,278,008,109,589,269)。对上述序列中的元素再按关键字K1来分配
此文档下载收益归作者所有