Laishiji 2017-10-15 15:41 采纳率: 100%
浏览 924
已结题

数据结构C语言版。编译器没报错。不知道哪里有问题。求大神解答

//若干城市的信息存入一个带头结点的单链表,节点中的城市信息包括城市名、城市的位置坐标。要求
//(1)给定一个城市名,返回其位置坐标。(2)给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市
#include
#include
#include
#include
#define Null 0

typedef struct node
{
char name[20];
float x,y;
struct node *next;
} Node,*CITY;//定义单链表结点

void InitList(CITY L)
{
L=(CITY)malloc(sizeof(Node));
L->next=Null;
}//初始化单链表

void CreateList(CITY L)
{
Node r,*s;
char city[20];
float a,b;
int flag=1;
r=L;
printf("当输入$时表示输入结束");
while(flag)
{
printf("请输入城市名:");
scanf("%s",city);
if(strcmp("$",city)!=0)
{ printf("请输入该城市的坐标x和y:");
scanf("%f%f",&a,&b);
s=(Node
)malloc(sizeof(Node));
strcpy(s->name,city);
s->x=a;
s->y=b;
r->next=s;
r=s;
}
else
{
flag=0;
r->next=Null;
}
}
}//尾插法建立单链表

void FindCoordinate(CITY L,char c[])
{
Node *p;
p=L->next;
while(strcmp(p->name,c)!=0)
{
p=p->next;
}
printf("该城市的位置坐标为%f,%f",p->x,p->y);
}//查找结点信息

void FindCity(CITY L,float a,float b,float D)
{
Node *p;
float d;
p=L->next;
printf("符合条件的有以下城市:\n");
while(p->next!=Null)
{
d=sqrt(pow((p->x)-a,2)+pow((p->y)-b,2));
if(d<=D)
printf("%s",p->name);
p=p->next;
}
}

int main()
{
CITY L;
InitList(L);
CreateList(L);
float a,b,D;
char Name[20];
printf("您想要查找的城市是:");
scanf("%s",Name);
FindCoordinate(L,Name);
printf("请输入坐标P的值以及距离D:");
scanf("%f%f%f",&a,&b,&D);
FindCity(L,a,b,D);
return 0;
}

  • 写回答

2条回答 默认 最新

  • ChildHood1949 2017-10-16 04:56
    关注

    r=L;类型都不一样;r是结构体对象,L是结构体对象指针;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 想问一下stata17中这段代码哪里有问题呀
  • ¥15 flink cdc无法实时同步mysql数据
  • ¥100 有人会搭建GPT-J-6B框架吗?有偿
  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决