城市链表实验报告

城市链表实验报告

ID:47438327

大小:117.01 KB

页数:12页

时间:2020-01-11

城市链表实验报告_第1页
城市链表实验报告_第2页
城市链表实验报告_第3页
城市链表实验报告_第4页
城市链表实验报告_第5页
资源描述:

《城市链表实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2014-2015学年第一学期实验报告课程名称:算法与数据结构实验名称:城市链表一、实验目的本次实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。同时,通过本次实验帮助学生复习高级语言的使用方法。二、实验内容(一)城市链表:将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。(二)约瑟夫环m的初值为20;密码:3,1,7,2,6,8,4(正确的结果应为6,1,4,7,2,3,5)。

2、三、实验环境VS2010、win8.1四、实验结果(一)城市链表:(1)创建城市链表;(2)给定一个城市名,返回其位置坐标;(3)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。(4)在已有的城市链表中插入一个新的城市;(5)更新城市信息;(6)删除某个城市信息。(二)约瑟夫环m的初值为20;密码:3,1,7,2,6,8,4输出6,1,4,7,2,3,5。五、附录城市链表:5.1问题分析该实验要求对链表实现创建,遍历,插入,删除,查询等操作,故使用单链表。5.2设计方案该程序大致分为以下几个模块:1.创建城市

3、链表模块,即在空链表中插入新元素。故创建城市链表中包涵插入模块。2.返回位置坐标模块。3.计算距离模块4.插入模块。5.更新城市信息模块6.删除信息模块。5.3算法5.3.1根据中心城市坐标,返回在距离内的所有城市:voidFindCityDistance(citylist*L){//根据距离输出城市……//输入信息与距离L=L->next;while(L!=NULL){if(((L->x-x1)*(L->x-x1)+(L->y-y1)*(L->y-y1)<=dis*dis)&&(((L->x-x1)+(L->y-y1))!=0

4、)){printf("城市名称%s",L->Name);printf("城市坐标%.2lf,%.2lf",L->x,L->y);}L=L->next;}}该算法主要用到了勾股定理,考虑到不需要实际数值,只需要大小比较,所以只用横坐标差的平方+纵坐标差的平方<=距离的平方判定。因中心城市本身也在判定范围之内,所以添加了判定条件横纵坐标差的和不能为零。5.3.2主程序中循环条件判定:for(;;){printf("请选择您的操作");printf("1.创建城市链表");printf("2.根据名字查询城市");

5、printf("3.插入");printf("4.删除");printf("5.更新城市信息");printf("6.根据离中心坐标距离查看城市");printf("7.退出系统");scanf("%d",&choice);switch(choice){……//case语句case7:break;}if(choice==7)break;}若用户选择了退出系统选项,则首先跳出switch在跳出for循环结束程序。否结束是是否退出退出插入删除更新距离5.4流程图查询创建开始选择操作5.5程序源代码typedefs

6、tructcitylist{charName[20];doublex,y;citylist*next;}citylist,*L;voidInitList_SqCity(citylist*L){//初始化节点L->next=NULL;}voidInsert_sqCity(citylist*L){//在链表中插入元素citylist*newNode;newNode=(citylist*)malloc(sizeof(citylist));if(!newNode)printf("存储分配失败");printf("请输入城市名");s

7、canf("%s",newNode->Name);printf("请输城市坐标xy");scanf("%lf%lf",&(newNode->x),&(newNode->y));while(L->next!=NULL){L=L->next;}//如果非空,L指针的位置向后移newNode->next=L->next;L->next=newNode;}voidCreate_sqCity(citylist*L){//创建链表charch[100];inti;printf("输入END退出,输入其余值继续");//当输入END时

8、,在任意输入,则退出此操作scanf("%s",ch);for(;strcmp(ch,"END")!=0;){Insert_sqCity(L);printf("输入END退出,输入其余值继续");scanf("%s",ch);}}voidGet_sqCity

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。