2022年城市链表实验报告.pdf





《2022年城市链表实验报告.pdf》由会员分享,可在线阅读,更多相关《2022年城市链表实验报告.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、城市链表实验报告2014-2015学年第一学期实验报告课程名称 : 算法与数据结构实验名称 : 城市链表一、 实验目的本次实验的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。同时,通过本次实验帮助学生复习高级语言的使用方法。二、 实验内容(一)城市链表: 将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名 ,城 市的位置坐标。要求能够利用城市名与位置坐标进行有关查找、插入、删除、更新等操作。(二) 约瑟夫环m 的初值为20;密码 :3,1,7,2,6,8,4(正确的结果应为6,1,4,7,2,3,5)。三、 实验环境VS2010
2、 、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、入新元素。故创建城市链表中包涵插入模块。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 10 页 - - - - - - - - - - 城市链表实验报告2、返回位置坐标模块。3、计算距离模块4、插入模块。5、更新城市信息模块6、删除信息模块。5、3 算法5、3、1 根据中心城市坐标,返回在距离内的所有城市: void FindCityDistance(citylist *L) / 根据距离输出城市 / 输入信息与距离L=L-next; while(L != NULL) if(L-x-x1)*
4、(L-x-x1)+(L-y-y1)*(L-y-y1)x-x1)+(L-y-y1)!=0 ) printf(城市名称 %sn,L-Name); printf(城市坐标 % 、2lf,%、2lfn,L-x,L-y); L=L-next; 该算法主要用到了勾股定理, 考虑到不需要实际数值, 只需要大小比较, 所以只用横坐标差的平方+纵坐标差的平方 next = NULL; void Insert_sqCity(citylist *L) / 在链表中插入元素citylist* newNode; newNode=(citylist*)malloc(sizeof(citylist); if (!newNo
5、de) printf( 存储分配失败 ); printf(请输入城市名 n ); scanf(%s ,newNode-Name); printf(请输城市坐标 x yn); scanf(%lf%lf,&(newNode-x),&(newNode-y); while (L-next != NULL) L = L-next; / 如果非空 ,L 指针的位置向后移newNode-next =L-next; L-next = newNode; void Create_sqCity(citylist *L) / 创建链表char ch100; int i; printf(输入 END 退出, 输入其余值
6、继续 n ); /当输入 END 时, 在任意输入 , 则退出此操作scanf(%s ,ch); for (;strcmp(ch,END )!=0 ; ) Insert_sqCity(L); printf( 输入 END 退出 , 输入其余值继续 n ); scanf(%s ,ch); 创建查询插入删除更新距离退出就 是 否 退出就是结束开始选择操作否精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 10 页 - - - - - - - - - - 城市链表实验报告 void Get_sqCit
7、yCoord(citylist *L) / 输入城市信息返回坐标char ch10; printf(输入要查询的城市 ); scanf(%s ,ch); while (L-next!= NULL &strcmp(L-next-Name,ch) L=L-next; if (L-next = NULL) printf(城市不存在 ); else printf(%、2lf,% 、2lfn,L-next-x,L-next-y); void Delete_sqCity(citylist *L) / 删除城市信息 , 按名称 / 坐标printf(请输入城市名 n); char ch10; scanf(%
8、s ,ch); while (L-next != NULL&strcmp(L-next-Name,ch) L=L-next; if (L-next = NULL) printf( 城市不存在 ); / 删除位置不合理L-next=L-next-next; printf( 删除城市成功 ); void FindCityDistance(citylist *L) / 根据距离输出城市printf(输入中心城市坐标 ); double x1,y1; scanf(%lf%lf,&x1,&y1); printf(输入距离 ); double dis; scanf(%lf,&dis); L=L-next;
9、 while (L != NULL) if (L-x-x1)*(L-x-x1)+(L-y-y1)*(L-y-y1)x-x1)+(L-y-y1)!=0 ) printf(城市名称 %sn,L-Name); printf(城市坐标 % 、2lf,% 、2lfn,L-x,L-y); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 10 页 - - - - - - - - - - 城市链表实验报告L=L-next; void Update_sqCity(citylist* L) / 更新城市信息cha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 城市 实验 报告

限制150内