1、城市问题盐城师范学院信息科学与技术学院实验报告课程名称算法与数据结构实验 2011-2012学年第一学期班级104学号姓名实验地点4#303实验日期10.13实验学时2实验名称链表知识的应用实验类型 验证性 综合性 设计性实验目的: 巩固链表知识,提高对链表的知识应用实验环境:(包括软件平台和硬件平台)软件平台:VC6.0+,windows XP操作系统硬件环境:实验内容(应包括实验题目、算法描述、实验过程等)实验题目:将若干城市信息存入一个带有结点的单链表,结点中的城市信息包括城市名以及城市的位置坐标,要求:1给一个城市名,返回其位置坐标2给一个位置坐标P和一个距离D,返回所有与P的距离小于
2、等于D的城市算法描述:程序分为三个部分,第一个是程序的入口主函数,第二个链表实现的部分实验过程:编写代码程序调试进行修改程序运行实验结果及分析: 界面显示如下:输入的值为1,并输入相关城市与城市的坐标,显示出来的数据,如下:选择的数据为2,测试如下:选择的数据为3,进行测试,测试如下:成绩 教师签名 日期 附录(可包括源程序清单或其它说明)#include# include # include typedef struct sNode char sname10; struct position float x; float y; position;Elemtype;typedef struct
3、 Node Elemtype data; struct Node *next;LNode,*LinkList;void initList(LinkList *l) *l=(LinkList)malloc(sizeof(LNode);/初始化链表。 (*l)-next=NULL;void readdata(LinkList p)/输入每一个节点的数据项。 coutp-data.sname; coutp-data.position.xp-data.position.y;void writedata(LinkList p)/显示节点数据项。 coutdata.snameendl; coutdata.
4、position.x data.position.yendl;void createList(LinkList L)/创建链表。 int i; LinkList p; for(i=1;i5;i+) p=(LinkList)malloc(sizeof(LNode); cout请输入第i城市next=L-next; L-next=p; void visitList(LinkList L)/访问链表。 LinkList p; p=L-next; while(p) writedata(p); p=p-next; void getList(LinkList L,char name10)/给出城市名输出城
5、市坐标。 LinkList p; p=L-next ; while(p)/如果输入的名称和链表中的城市名称相同那么执行循环语句。 if(strcmp(p-data.sname,name) p=p-next;/指针后移。 else break; if(!p) cout你查找的城市不存在!endl; else coutdata.position.x data.position.ynext ; float q; q=(p-data.position.x-x)*(p-data.position.x-x)+(p-data.position.y-y)*(p-data.position.y-y); whil
6、e(p)/当链表不为空,执行while循环。 if(q=z*z)/如果两个城市的距离小于给定的距离则把该城市的名称输出 coutdata.snamenext; if(count) cout附近的城市有:count 个endl; else cout周围查不到少于这个距离的城市!endl;void main() float x,y,z; char name10; LinkList L; cout1输入城市名称和坐标endl; cout2输入城市名称返回城市坐标endl; cout3给定一个城市坐标和一个距离输出该距离内的所有城市名称w; switch(w) case 1:cout输入城市的名字和坐标endl; createList(L); break; case 2: cout请输入城市名,你将会得到它的坐标:name; getList(L,name); break; case 3: cout输入一个坐标和距离,你将会得到少于这个距离的城市名:xyz; disList(L,x,y,z); break;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1