博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表练习题3-城市查找问题
阅读量:5830 次
发布时间:2019-06-18

本文共 2033 字,大约阅读时间需要 6 分钟。

hot3.png

题目

        将若干城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名、城市的位置坐标。要求:(1)给定一个城市名,返回其位置坐标;(2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。本题只考察链表信息,城市名可使用单字符。

代码实现

#include 
#include
#include
typedef struct Node { char name; int x; int y; struct Node *next;} Node, *LinkList;void initLink(LinkList *link);void input(LinkList link);void print(LinkList link);void searchByName(LinkList link, char name);void findAllCity(LinkList link, int x, int y, int distance);int main(int argc, char *argv[]) { LinkList link; char name; int x, y, distance; initLink(&link); input(link); print(link); printf("请输入您要查询的城市名:\n"); getchar(); scanf("%c", &name); searchByName(link, name); printf("请输入您要查询的城市坐标及限定距离,格式为[X坐标 Y坐标 限定距离]:\n"); scanf("%d %d %d", &x, &y, &distance); findAllCity(link, x, y, distance); return 0;}/** * 初始化链表 */void initLink(LinkList *link) { *link = (Node *)malloc(sizeof(Node)); (*link)->next = NULL;}/** * 打印输出链表 */ void print(LinkList link) { Node *p = link->next; while (p) { printf("城市名:%c\tX坐标:%d\tY坐标:%d\n", p->name, p->x, p->y); p = p->next; }}/** * 首次输入链表内数据 */ void input(LinkList link) { Node *node; int time = 0; printf("请输入要输入的数据个数:\n"); scanf("%d", &time); printf("请以[城市名 X坐标 Y坐标]的格式输入数据:\n"); for (int i = 0; i < time; i++) { getchar(); node = (Node *)malloc(sizeof(Node)); scanf("%c %d %d", &node->name, &node->x, &node->y); link->next = node; link = node; } link->next = NULL;}/** * 给定一个城市名,返回其位置坐标 * link: 链表 * name:城市名 */ void searchByName(LinkList link, char name) { Node *node = link->next; while (node) { if (name == node->name) { printf("X坐标:%d\tY坐标:%d\n", node->x, node->y); break; } node = node->next; }}/** * 给定一个位置A坐标,距离D,返回所有与A的距离小于distance的城市名 * link: 链表 * x:x坐标 * y:y坐标 * distance:距离 */ void findAllCity(LinkList link, int x, int y, int distance) { Node *node = link->next; while (node) { if (sqrt(pow(x - node->x, 2) + pow(y - node->y, 2)) <= distance ) { printf("城市:%c\n", node->name); } node = node->next; }}

 

转载于:https://my.oschina.net/niithub/blog/3019431

你可能感兴趣的文章
RabbitMQ 集群配置
查看>>
入门一班 20181023 w vmstat top sar nload
查看>>
linex常用命令
查看>>
MySQL之SELECT
查看>>
新一代大数据技术架构
查看>>
互联网企业不能轻视的一些网络安全问题
查看>>
176条DevOps人员常用的linux命令速查表
查看>>
idou老师教你学Istio 17 : 通过HTTPS进行双向TLS传输
查看>>
C++ TCP winsock 多线程编程的代码
查看>>
hash_map使用自定义类型做主键
查看>>
Linux中如何创建、管理及查询用户和组
查看>>
为什么电子元器件产品会遭遇静电破坏?
查看>>
如何利用数字诊断功能(DDM)定位光模块的系统故障
查看>>
datetime与timestamp区别汇总
查看>>
华为TE60产品亮点及适用场景详解
查看>>
扫描二维码报修公司电脑
查看>>
循环内部修改List抛出ConcurrentModificationException异常
查看>>
努力爬坑
查看>>
xcode第三方插件管理工具Alcatraz
查看>>
液晶显示器常见故障
查看>>