急急急 关于数据结构线性表的问题!!

将若干个城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名、城市的位置坐标。要求:(1)给定一个城市名,返回其位置坐标;(2)给定一个位置坐标P和一个距离D,... 将若干个城市的信息存入一个带头结点的单链表,结点中的城市信息包括城市名、城市的位置坐标。要求: (1)给定一个城市名,返回其位置坐标;(2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。
这个怎么打啊 ~~初学这些不懂啊~~~ 强人们出现把~~ 万分感谢
展开
 我来答
moxsone
2010-09-27 · TA获得超过3331个赞
知道大有可为答主
回答量:2796
采纳率:50%
帮助的人:1488万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <memory.h>
#include <string.h>
/*
将若干个城市的信息存入一个带头结点的单链表,
结点中的城市信息包括城市名、城市的位置坐标。
要求:
(1)给定一个城市名,返回其位置坐标;
(2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。
*/

//坐标结构体
struct Point
{
double X;//X坐标
double Y;//Y坐标
};

//城市结构体
struct City
{
char Name[100];//城市名称
Point Ps;//该城市的坐标
City *pNext;//下个结点
};

//计算a,b两个坐标点之间的距离
double ComputeDistance(Point a,Point b)
{
return sqrt( pow((a.X - b.X),2) + pow((a.Y - b.Y),2) );
}

void main(void)
{
City *pHead = NULL;
City *pWork = NULL;
int i = 0;
char tmpInput[1024];

srand(time(NULL));

//随机生成几个城市的结点
for ( i = 0 ; i < 10 ; i++ )
{
City *tmpNode = new City();
sprintf(tmpNode->Name,"城市%d",i+1);
tmpNode->Ps.X = rand();
tmpNode->Ps.Y = rand();
tmpNode->pNext = NULL;
if ( pHead == NULL )
{
pHead = tmpNode;
pWork = pHead;
}
else
{
pWork->pNext = tmpNode;
pWork = pWork->pNext;
}
}

//输出所有城市列表
pWork = pHead;
while ( NULL != pWork )
{
printf("城市 : 名称=%s 坐标: X = %f Y =%f\n",pWork->Name,pWork->Ps.X,pWork->Ps.Y);
pWork = pWork->pNext;
}

printf("输入城市名(如: 城市1) = ");
memset(tmpInput,0x0,sizeof(tmpInput));
scanf("%s",tmpInput);

//查找城市
pWork = pHead;
while ( NULL != pWork )
{
if ( strcmp(pWork->Name,tmpInput) == 0 )
{
printf("找到城市 : 名称=%s 坐标: X = %.2f Y =%.2f\n",pWork->Name,pWork->Ps.X,pWork->Ps.Y);
break;
}
pWork = pWork->pNext;
}

//判断距离小于D的城市
Point P;
double D = 0.0;
memset(tmpInput,0x0,sizeof(tmpInput));
printf("输入一个位置 X坐标 = ");
scanf("%s",tmpInput);
P.X = atof(tmpInput);
printf("输入一个位置 Y坐标 = ");
scanf("%s",tmpInput);
P.Y = atof(tmpInput);
printf("输入一个判断距离 = ");
scanf("%s",tmpInput);
D = atof(tmpInput);

//循环判断并输出
pWork = pHead;
while ( NULL != pWork )
{
if ( ComputeDistance(pWork->Ps,P) < D )
{
printf("找到到点(%f,%f)距离小于%f的城市 :\n\t名称=%s 坐标: X = %.2f Y =%.2f\n",P.X,P.Y,D,pWork->Name,pWork->Ps.X,pWork->Ps.Y);
}
pWork = pWork->pNext;
}

//释放链表
pWork = pHead;
City *pWorkNext = pWork->pNext;
while ( NULL != pWork )
{
delete pWork;
pWork = pWorkNext;
if ( pWork != NULL )
{
pWorkNext = pWork->pNext;
}
}

fflush(stdin);
getchar();
}
景联文科技
2024-06-11 广告
一、什么是数据标注?1. 数据标注定义数据标注是对未经处理的语音、图片、文本、视频等数据进行加工处理, 并转换为机器可识别信息的过程。原始数据一般通过数据采集获得, 随后的数据标注相当于对数据进行加工, 然后输送到人工智能算法和模型里完成调... 点击进入详情页
本回答由景联文科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式