- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计---城市链表的设计与实现
数据结构课程设计
?
题 目: 城市链表的设计与实现
二叉排序树基本操作的实现
年级 专业: 09计算机科学与技术
姓 名: 陈 戗
学 号: E
城市链表的设计与实现
设计要求
问题描述
将若干城市信息,存入一个带头结点的单链表。节点中的城市信息包括城市名、城市位置坐标、城市人口、城市面积、城市特色等。要求能够利用城市名和位置坐标来进行查找、插入、删除、更新等操作。
需求分析
给定一个城市名,返回其位置坐标。
给定一个中心位置坐标p和一个距离d,返回所以与p距离小于等于d的城市。
概要设计
为了实现需求分析中的功能,可以从以下3方面着手设计。
主界面设计
为了实现城市链表的基本操作,设计一个包含多个菜单选项的主控制子程序以实现城市链表的各项子功能, 方便用户的使用。 本系统的主控制菜单运行界面如图1所示。
图1城市链表的主菜单
存储结构的设计
本程序主要采链表结构类型来表示城市链表的信息。其中二叉树节点由7分量组成:城市的名称、城市的位的横坐标、城市位置的纵坐标、城市的面积、城市的人口、城市的特色,及指向自己结构体的指针。
系统功能设计
本程序设置了6个子功能菜单,其设计如下。
建立城市链表。根据系统提示,选择功能项1,并根据提示逐个输入城市的名称、位置坐标、人口、面积、特色等。该功能由void Create()函数实现。
显示全部城市信息。根据系统提示,选择功能项2,即可显示全部的城市信息。该功能由print()函数实现。
插入新的城市界节点信息。根据系统提示选择功能项3,可每次插入一个节点信息,如果要插入多个城市信息,需多次选择传插入功能。该功能由Insert ()函数实现。
查询城市的信息。选择功能项4,进入查询菜单,有两种查询方式。一是跟根据城市名称查询,二是根据城市的位置坐标的距离查询。该功能由Searchmenu ()和void Searchname()及void Searchposition()函数实现。
更新城市链表中不正确后过时的信息。可以通过城市名称查询到该节点,再以此输入城市名称坐标、人口、面积、特色等属性。该功能由void UpdateCity()实现。
删除城市链表的节点信息。根据提示可以对城市链表中不需要的节点进行删除,删除的方式是输入城市名称,查询到该节点后删除。该功能由void Delete ()函数实现。
模块设计
模块设计
本程序包含两个模块:主程序模块和二叉排序树操作模块。其调用关系如图2
图2模块调用示意图
系统子程序及其功能设计
本系统共设计了9个子程序,个程序的的函数名及其功能说明如下:
void Init(Citylist LHead);//创建头指针
void Create(Citylist LHead);//创建城市链表
int print(Citylist LHead);//显示全部信息
void Insert(Citylist LHead);//插入新城市信息
int Searchmenu(Citylist LHead);//查询查询菜单
void Searchname(Citylist LHead);//按名称查询
void Searchposition(Citylist LHead);//按坐标查询
void UpdateCity(Citylist LHead);//更新城市信息
void Delete(Citylist LHead);//删除城市信息
函数主要的调用关系
本系统9个子程序见的主要调用关系图3.
Searchname
详细设计
数据类型定义
本系统采用链表结构存储城市节点信息,节点定义如下:
typedef struct Citynode{
char cityName[30];//名称
float x;//横坐标
float y;//纵坐标
int citypopulation;//人口
float cityarea;//面积
char citycharacteristic[50];//特色
struct Citynode *Next;
}Citynode,*Citylist;
主要子程序的详细设计
城市链表的创建函数,主要用来建立城市链表。
void Create(Citylist LHead)
{
int n;
printf(请输入要创建的链表的城市个数:);
scanf(%d,n);
for(int i=0;in;i++)Insert(LHead);//利用逐个插入法建立链表
}
城市链
文档评论(0)