ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:230.12KB ,
资源ID:3325723      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3325723.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(城市链表实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

城市链表实验报告.docx

1、城市链表实验报告本科学生综合性实验报告学 院: 软件与通信工程学院 课程名称: 数据结构与算法 专业班级: 09通信工程1班 姓 名: 王燕 学 号: 0093731 学生实验报告(1)学生姓名王燕学号0093731同组人实验项目城市链表必修 选修 演示性实验 验证性实验 操作性实验 综合性实验实验地点H113实验仪器台号指导教师蒋娜实验日期及节次周一5、6、7节一、实验目的1掌握用 C语言调试程序的基本方法。2掌握线性表的基本运算,如创建、插入、删除等。二、实验内容将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查

2、找、插入、删除、更新等操作。拓展要求(1) 给定一个城市名,返回其位置坐标;(2) 给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。三、实验要求1用C+/C完成算法设计和程序设计并上机调试通过。2. 实验过程中学生调试完成,需向教师演示实验过程和结果。3撰写实验报告,提供实验结果和数据。4分析算法,要求给出具体的算法分析结果,包括时间复杂度和空间复杂度,并简要给出算法设计小结和心得。5. 采用上机情况、程序质量、实习报告相结合的形式,满分为100分。四、实验仪器1.WindowsXP以上操作系统;2.Visual C+6.0语言环境;3.每人一台PC机。五、实验内容和步骤1

3、启动Windows XP操作系统打开计算机,启动Windows XP操作系统。2创建工作文件夹创建Visual C+ 6.0的工作文件夹。3启动Visual C+ 6.0建立一个空工程LinkList,在建立一个源文件citylinklist4.编写代码如下:#include#include#include#include#includetypedef struct Node char CityName10; float CityPoistion2; struct Node *next;Node, * LinkList;void InitList(LinkList * H) * H=(Link

4、List)malloc(sizeof(Node); (* H)-next=NULL;/建立城市信息链表,以城市名“no”作为结束标识符void CreateCity(LinkList H) Node * r, * s; char name10; float x,y; r=H; printf(请输入若干个城市的信息!(以城市名no结束)n城市名 经度 纬度n); scanf(%s%f%f,name,&x,&y); while(strcmp(name,no)!=0) s=(Node*)malloc(sizeof(Node); strcpy(s-CityName,name); s-CityPoist

5、ion0=x; s-CityPoistion1=y; r-next=s; r=s; scanf(%s%f%f,name,&x,&y); r-next=NULL;/在某个城市后面插入一个城市信息int InsertCity(LinkList L) Node *p,*q; char cityname10,name10; /name为定位城市名,cityname为要插入城市信息的城市名 float x,y,x1,y1; /x1,y1是定位城市位置坐标,x,y是要插入城市信息的城市位置坐标 int flag; printf(请选择插入方式 (0 按城市名插入, 1 按城市位置坐标插入):); scan

6、f(%d,&flag); switch(flag) case 0: p=L; printf(请输入在那个城市名后插入城市信息:); scanf(%s,name); getchar(); while(p!=NULL)&(strcmp(p-CityName,name)!=0) p=p-next; if(p=NULL) printf(没有找到城市名为 %s 的城市,插入位置不当!n,name); else printf(在城市 %s 后插入一个城市信息:n城市名 经度 纬度n,name); scanf(%s%f%f,cityname,&x,&y); q=(Node*)malloc(sizeof(No

7、de); strcpy(q-CityName,cityname); q-CityPoistion0=x; q-CityPoistion1=y; q-next=p-next; p-next=q; break; case 1: p=L; printf(请输入在哪个城市位置坐标后插入城市信息:); scanf(%f%f,&x1,&y1); getchar(); while(p!=NULL)&(p-CityPoistion0!=x1)&(p-CityPoistion1!=y1) p=p-next; if(p=NULL) printf(没有找到满足坐标为(%.2f , %.2f)的城市,插入位置不当!n

8、,x1,y1); else printf(在城市坐标为(%.2f , %.2f)的城市后面插入一个城市信息n城市名 经度 纬度n,x1,y1); scanf(%s%f%f,cityname,&x,&y); q=(Node*)malloc(sizeof(Node); strcpy(q-CityName,cityname); q-CityPoistion0=x; q-CityPoistion1=y; q-next=p-next; p-next=q; break; return 1;/删除一个城市信息int DeleteCity(LinkList L) Node *p,*q; char name10

9、; /name是要删除城市信息的城市名 float x1,y1; /x,y是要删除城市信息的城市位置坐标 int flag; printf(请选择删除方式 (0 按城市名删除, 1 按城市坐标删除): ); scanf(%d,&flag); switch(flag) case 0: p=L; q=p-next; printf(请输入要删除城市信息的城市名:); scanf(%s,name); while(q!=NULL & strcmp(q-CityName,name)!=0) q=q-next; p=p-next; if(q=NULL) printf(没有找到城市名为 %s 的城市,删除不成

10、功!n,name); else p-next=q-next; printf(删除了城市 %s 的信息.n,q-CityName); free(q); break; case 1: p=L; q=p-next; printf(请输入要删除城市信息的城市位置坐标:); scanf(%f%f,&x1,&y1); while(q!=NULL)&(q-CityPoistion0!=x1)&(q-CityPoistion1!=y1) q=q-next; p=p-next; if(q=NULL) printf(没有找到满足坐标为(%.2f , %.2f)的城市,删除不成功!n,x1,y1); else pr

11、intf(删除了城市 %s 的信息.n,q-CityName); p-next=q-next; free(q); break; return 1;/查找一个城市信息int FindCity(LinkList L) Node *p; char name10; /name是要查找城市信息的城市名 float x1,y1; /x,y是要查找城市信息的城市位置坐标 int flag; printf(请选择查找方式 (0 按城市名查找, 1 按城市位置坐标查找): ); scanf(%d,&flag); switch(flag) case 0: p=L-next; printf(请输入要查找城市信息的城

12、市名:); scanf(%s,&name); while(p!=NULL&strcmp(p-CityName,name)!=0) p=p-next; if(p=NULL) printf(没有找到城市名为 %s 的城市!n,name); else printf(城市名为 %s 的城市位置坐标为(%.2f , %.2f)n,p-CityName,p-CityPoistion0,p-CityPoistion1); break; case 1: p=L-next; printf(请输入要查找城市信息的城市位置坐标:); scanf(%f%f,&x1,&y1); while(p!=NULL)&(p-Ci

13、tyPoistion0!=x1)&(p-CityPoistion1!=y1) p=p-next; if(p=NULL) printf(没有找到城市位置坐标为(%.2f , %.2f)的城市!n,x1,y1); else printf(城市位置坐标为(%.2f , %.2f)的是城市名为 %s n,p-CityPoistion0,p-CityPoistion1,p-CityName); break; return 1;/计算二维坐标两点间的距离float Length(float x1,float y1,float x2,float y2) float l; l=sqrt(x2-x1)*(x2-

14、x1)+(y2-y1)*(y2-y1); return l;/以某点为中心找到所有小于某个距离的城市void SubDAround(LinkList L) Node * q; int n=0; float px,py,d; q=L-next; printf(请输入中心坐标点坐标以及距离:); scanf(%f%f%f,&px,&py,&d); printf(距中心坐标点(%.2f , %.2f) %.2f 的城市有:n,px,py,d); while(q!=NULL) if(Length(px,py,q-CityPoistion0,q-CityPoistion1)CityName,q-City

15、Poistion0,q-CityPoistion1); q=q-next; n+; else q=q-next; if(n=0) printf(没有任何城市符合条件!n);/显示所有城市信息void DisplayCity(LinkList L) Node * p; p=L-next; printf(城市名 经度 纬度n); while(p!=NULL) printf(%s %.2f %.2fn,p-CityName,p-CityPoistion0,p-CityPoistion1); p=p-next; void main() int k=1; LinkList CLL; InitList(&

16、CLL); while(k) printf(nnttt城市信息管理系统nn); printf(ttt1.建立一个城市信息链表n); printf(ttt2.查找一个城市信息n); printf(ttt3.插入一个城市信息n); printf(ttt4.删除一个城市信息n); printf(ttt5.显示所有城市信息n); printf(ttt6.距某点小于某距离的所有城市信息n); printf(ttt0.退出n); printf(请选择操作项目:); scanf(%d,&k); system(cls); switch(k) case 1:CreateCity(CLL);system(paus

17、e);break; case 2:FindCity(CLL);system(pause);break; case 3:InsertCity(CLL);system(pause);break; case 4:DeleteCity(CLL);system(pause);break; case 5:DisplayCity(CLL);system(pause);break; case 6:SubDAround(CLL);system(pause);break; case 0:break; system(cls); 5.编译、运行,结果如下:开始界面:建立城市城市信息链表:显示建立城市信息链表后的内容:

18、按城市名查找城市信息,而且查找成功:按城市名查找城市信息,但查找不成功:按城市坐标查找城市信息,而且查找成功:按城市名查找城市信息,但查找不成功:按城市名在某个城市后面插入一个城市信息,而且插入成功:按城市名在某个城市后面插入一个城市信息,但插入不成功:按城市坐标在某个城市后面插入一个城市信息,而且插入成功:按城市坐标在某个城市后面插入一个城市信息,但插入不成功:显示插入城市信息后城市链表的内容:按城市名删除一个城市信息,而且删除成功:按城市名删除一个城市信息,但删除不成功:按城市坐标删除一个城市信息,而且删除成功:按城市坐标删除一个城市信息,但删除不成功:显示删除一些城市信息后城市链表的内容

19、:寻找以某点中心小于某个距离的所有城市信息,而且寻找成功:寻找以某点中心小于某个距离的所有城市信息,但寻找不成功:选择退出后的页面:四、结论1、实验结果实现了在城市链表中利用城市名和位置坐标进行有关查找、插入、删除、更新基本要求的操作。同时也实现了拓展要求中的给定一个城市名,返回其位置坐标;给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市的要求。2、分析讨论我的编程要求是全面,界面友好,具有主动控制权。这个程序结果绝对是我自己编出来的,在主函数中我要到了分支选择语句switch(),并且用了清屏函数system(“cls”)来保持友好的界面。其中“建立一个城市信息链表”既是初

20、始化链表信息的操作,也是在已有信息的情况下对城市链表进行更新的操作,在该函数体中采用循环,并以城市名no结束链表的初始化或更新。查找、插入、删除一个城市信息这几个操作都具有选择权与自主输入权,可以选择按城市名或者城市位置坐标进行查找、插入、删除,同时每一个操作项目都有操作不成功是的语句。在插入操作中,本来可以直接把一个城市信息插在链表最后面,但为了体现插入操作的特征,我给它安排了定位点,即在某个城市名或城市位置坐标后面插入一个城市信息。我还额外定义了一个显示城市链表所以信息的函数DisplayCity(),在删除或者插入一个或多个城市信息后可以显示城市链表里信息的变化。五、指导教师评语及成绩:评语: 成绩: 指导教师签名: 批阅日期:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1