1、 数据结构课程设计数据结构课程设计 题题 目:目: 城市链表的设计与实现 二叉排序树基本操作的实现 年级年级 专业:专业: 09 计算机科学与技术计算机科学与技术 姓姓 名名: 学学 号:号: 城市链表的设计与实现城市链表的设计与实现 I. 设计要求设计要求 1. 问题描述问题描述 将若干城市信息,存入一个带头结点的单链表。节点中的城市信息包括城市 名、城市位置坐标、城市人口、城市面积、城市特色等。要求能够利用城市名和 位置坐标来进行查找、插入、删除、更新等操作。 2. 需求分析需求分析 1) 给定一个城市名,返回其位置坐标。 2) 给定一个中心位置坐标 p 和一个距离 d, 返回所以与 p
2、距离小于等于 d 的 城市。 II. 概要设计概要设计 为了实现需求分析中的功能,可以从以下 3 方面着手设计。 1. 主界面设计主界面设计 为了实现城市链表的基本操作, 设计一个包含多个菜单选项的主控制子程序以实现 城市链表的各项子功能, 方便用户的使用。 本系统的主控制菜单运行界面如图 1 所 示。 图 1 城市链表的主菜单 2. 存储结构的设计存储结构的设计 本程序主要采链表结构类型来表示城市链表的信息。其中二叉树节点由 7 分量组 成:城市的名称、城市的位的横坐标、城市位置的纵坐标、城市的面积、城市的人口、 城市的特色,及指向自己结构体的指针。 3. 系统功能设计系统功能设计 本程序设
3、置了 6 个子功能菜单,其设计如下。 1) 建立城市链表。根据系统提示,选择功能项 1,并根据提示逐个输入城市的名 称、位置坐标、人口、面积、特色等。该功能由 void Create()函数实现。 2) 显示全部城市信息。根据系统提示,选择功能项 2,即可显示全部的城市信息。 该功能由 print()函数实现。 3) 插入新的城市界节点信息。根据系统提示选择功能项 3,可每次插入一个节点 信息,如果要插入多个城市信息,需多次选择传插入功能。该功能由 Insert () 函数实现。 4) 查询城市的信息。选择功能项 4,进入查询菜单,有两种查询方式。一是跟根 据城市名称查询, 二是根据城市的位置
4、坐标的距离查询。 该功能由 Searchmenu ()和 void Searchname()及 void Searchposition()函数实现。 5) 更新城市链表中不正确后过时的信息。可以通过城市名称查询到该节点,再 以此输入城市名称坐标、 人口、 面积、 特色等属性。 该功能由 void UpdateCity() 实现。 6) 删除城市链表的节点信息。根据提示可以对城市链表中不需要的节点进行删 除,删除的方式是输入城市名称,查询到该节点后删除。该功能由 void Delete ()函数实现。 III. 模块设计模块设计 1. 模块设计模块设计 本程序包含两个模块:主程序模块和二叉排序树操作模块。其调用关系如图 2 图 2 模块调用示意图 2. 系统子程序及其功能设计系统子程序及其功能设计 本系统共设计了 9 个子程序,个程序的的函数名及其功能说明如下: 1) void Init(Citylist LHead);/创建头指针 2) void Create(Citylist LHead);/创建